RxFPC:fix file name handling for rxdbgridexportspreadsheet

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7151 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2019-09-27 06:17:48 +00:00
parent ba972e4bee
commit 7af9da7828
10 changed files with 118 additions and 45 deletions

View File

@ -231,6 +231,10 @@ msgstr ""
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "" msgstr ""

View File

@ -239,6 +239,10 @@ msgstr "Baza danych"
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "" msgstr ""

View File

@ -229,6 +229,10 @@ msgstr ""
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "" msgstr ""

View File

@ -239,6 +239,10 @@ msgstr "База данных"
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr "Не указано имя файла"
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "Редактор RxStrHolder" msgstr "Редактор RxStrHolder"

View File

@ -239,6 +239,10 @@ msgstr ""
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "Rx string tutucu editörü" msgstr "Rx string tutucu editörü"

View File

@ -243,6 +243,10 @@ msgstr ""
msgid "MB" msgid "MB"
msgstr "" msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor #: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor" msgid "Rx string holder editor"
msgstr "" msgstr ""

View File

@ -51,6 +51,7 @@ type
); );
TRxDBGridExportSpreadSheetOptions = set of TRxDBGridExportSpreadSheetOption; TRxDBGridExportSpreadSheetOptions = set of TRxDBGridExportSpreadSheetOption;
TRxSpreadSheetDefaultExt = (rdeNone, rdeOpenDocument, rdeExcel, rdeExcelX);
type type
@ -58,6 +59,7 @@ type
TRxDBGridExportSpreadSheet = class(TRxDBGridAbstractTools) TRxDBGridExportSpreadSheet = class(TRxDBGridAbstractTools)
private private
FDefaultExt: TRxSpreadSheetDefaultExt;
FFileName: string; FFileName: string;
FOpenAfterExport: boolean; FOpenAfterExport: boolean;
FOptions: TRxDBGridExportSpreadSheetOptions; FOptions: TRxDBGridExportSpreadSheetOptions;
@ -67,6 +69,7 @@ type
procedure ExpAllRow; procedure ExpAllRow;
procedure ExpSelectedRow; procedure ExpSelectedRow;
procedure ExpGrpLine(G: TColumnGroupItem); procedure ExpGrpLine(G: TColumnGroupItem);
function InternalGetFileName:string;
protected protected
FDataSet:TDataSet; FDataSet:TDataSet;
FWorkbook: TsWorkbook; FWorkbook: TsWorkbook;
@ -90,12 +93,21 @@ type
property PageName:string read FPageName write FPageName; property PageName:string read FPageName write FPageName;
property Options:TRxDBGridExportSpreadSheetOptions read FOptions write FOptions; property Options:TRxDBGridExportSpreadSheetOptions read FOptions write FOptions;
property OpenAfterExport:boolean read FOpenAfterExport write FOpenAfterExport default false; property OpenAfterExport:boolean read FOpenAfterExport write FOpenAfterExport default false;
property DefaultExt:TRxSpreadSheetDefaultExt read FDefaultExt write FDefaultExt default rdeOpenDocument;
end; end;
procedure Register; procedure Register;
const
RxSpreadSheetDefaultExtStr : array [TRxSpreadSheetDefaultExt] of string = (
'', //rdeNone,
'.ods', //rdeOpenDocument,
'.xls', //rdeExcel,
'.xlsx' //rdeExcelX
);
implementation implementation
uses fpsallformats, LCLType, Forms, math, LazUTF8, rxdconst, Controls, LCLIntf, uses fpsallformats, LCLType, Forms, math, LazUTF8, rxdconst, rxconst, Controls, LCLIntf,
RxDBGridExportSpreadSheet_ParamsUnit, rxdbutils, fpsutils, DBGrids; RxDBGridExportSpreadSheet_ParamsUnit, rxdbutils, fpsutils, DBGrids;
{$R rxdbgridexportspreadsheet.res} {$R rxdbgridexportspreadsheet.res}
@ -360,6 +372,19 @@ begin
end; end;
end; end;
function TRxDBGridExportSpreadSheet.InternalGetFileName: string;
var
SExt: String;
begin
if FFileName = '' then
raise Exception.Create(sRxNotDefinedFileName);
Result:=FFileName;
SExt:=ExtractFileExt(FFileName);
if (SExt = '') and (FDefaultExt <> rdeNone) then
Result:=Result + RxSpreadSheetDefaultExtStr[FDefaultExt];
end;
procedure TRxDBGridExportSpreadSheet.DoExportTitle; procedure TRxDBGridExportSpreadSheet.DoExportTitle;
var var
i, k : Integer; i, k : Integer;
@ -604,15 +629,24 @@ begin
inherited Create(AOwner); inherited Create(AOwner);
FCaption:=sToolsExportSpeadSheet; FCaption:=sToolsExportSpeadSheet;
FOpenAfterExport:=false; FOpenAfterExport:=false;
FDefaultExt:=rdeOpenDocument;
end; end;
function TRxDBGridExportSpreadSheet.DoExecTools: boolean; function TRxDBGridExportSpreadSheet.DoExecTools: boolean;
var var
P:TBookMark; P:TBookMark;
FPN, FFN: String;
begin begin
Result:=false; Result:=false;
if (not Assigned(FRxDBGrid)) or (not Assigned(FRxDBGrid.DataSource)) or (not Assigned(FRxDBGrid.DataSource.DataSet)) then if (not Assigned(FRxDBGrid)) or (not Assigned(FRxDBGrid.DataSource)) or (not Assigned(FRxDBGrid.DataSource.DataSet)) then
exit; exit;
if FPageName = '' then
FPN:=sPageName
else
FPN:=FPageName;
FFN:=InternalGetFileName;
FDataSet:=FRxDBGrid.DataSource.DataSet; FDataSet:=FRxDBGrid.DataSource.DataSet;
FDataSet.DisableControls; FDataSet.DisableControls;
{$IFDEF NoAutomatedBookmark} {$IFDEF NoAutomatedBookmark}
@ -622,7 +656,7 @@ begin
{$ENDIF} {$ENDIF}
FWorkbook := TsWorkbook.Create; FWorkbook := TsWorkbook.Create;
FWorksheet := FWorkbook.AddWorksheet(FPageName); FWorksheet := FWorkbook.AddWorksheet(FPN);
try try
scColorBlack:=FRxDBGrid.GridLineColor; scColorBlack:=FRxDBGrid.GridLineColor;
FCurRow:=0; FCurRow:=0;
@ -638,7 +672,7 @@ begin
DoExportColWidth; DoExportColWidth;
FWorkbook.WriteToFile(UTF8ToSys(FileName), true); FWorkbook.WriteToFile(UTF8ToSys(FFN), true);
Result:=true; Result:=true;
finally finally
FWorkbook.Free; FWorkbook.Free;
@ -652,7 +686,7 @@ begin
end; end;
if Result and FOpenAfterExport then if Result and FOpenAfterExport then
OpenDocument(FileName); OpenDocument(FFN);
end; end;
function TRxDBGridExportSpreadSheet.DoSetupTools: boolean; function TRxDBGridExportSpreadSheet.DoSetupTools: boolean;

View File

@ -6,16 +6,17 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
Caption = 'Export params' Caption = 'Export params'
ClientHeight = 328 ClientHeight = 328
ClientWidth = 548 ClientWidth = 548
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate OnCreate = FormCreate
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '1.9.0.0' LCLVersion = '2.1.0.0'
object Label1: TLabel object Label1: TLabel
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
Left = 6 Left = 6
Height = 20 Height = 17
Top = 6 Top = 6
Width = 104 Width = 99
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export file name' Caption = 'Export file name'
FocusControl = FileNameEdit1 FocusControl = FileNameEdit1
@ -28,8 +29,8 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 12 Left = 12
Height = 37 Height = 34
Top = 32 Top = 29
Width = 530 Width = 530
Filter = 'All files (*.*)|*.*|LibreOffice/OpenOffice (*.ods)|*.ods|Excel 97-2003|*.xls|Excel 2007-2013|*.xlsx' Filter = 'All files (*.*)|*.*|LibreOffice/OpenOffice (*.ods)|*.ods|Excel 97-2003|*.xls|Excel 2007-2013|*.xlsx'
FilterIndex = 0 FilterIndex = 0
@ -47,9 +48,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportGrpData AnchorSideTop.Control = cbExportGrpData
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 20 Height = 17
Top = 195 Top = 185
Width = 70 Width = 67
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Page name' Caption = 'Page name'
FocusControl = edtPageName FocusControl = edtPageName
@ -62,8 +63,8 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 286 Left = 286
Height = 37 Height = 34
Top = 221 Top = 208
Width = 256 Width = 256
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.Around = 6 BorderSpacing.Around = 6
@ -74,9 +75,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportColumnHeader AnchorSideTop.Control = cbExportColumnHeader
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 135 Top = 127
Width = 161 Width = 155
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export column footer' Caption = 'Export column footer'
TabOrder = 3 TabOrder = 3
@ -86,9 +87,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = FileNameEdit1 AnchorSideTop.Control = FileNameEdit1
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 75 Top = 69
Width = 140 Width = 133
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Open after export' Caption = 'Open after export'
TabOrder = 1 TabOrder = 1
@ -114,9 +115,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbOpenAfterExport AnchorSideTop.Control = cbOpenAfterExport
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 105 Top = 98
Width = 166 Width = 159
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export column header' Caption = 'Export column header'
TabOrder = 2 TabOrder = 2
@ -126,9 +127,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportColumnFooter AnchorSideTop.Control = cbExportColumnFooter
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 165 Top = 156
Width = 137 Width = 130
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export cell colors' Caption = 'Export cell colors'
TabOrder = 4 TabOrder = 4
@ -148,9 +149,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportFormula AnchorSideTop.Control = cbExportFormula
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 24 Height = 23
Top = 105 Top = 98
Width = 166 Width = 155
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Overwrite existing file' Caption = 'Overwrite existing file'
TabOrder = 6 TabOrder = 6
@ -160,9 +161,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = FileNameEdit1 AnchorSideTop.Control = FileNameEdit1
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 24 Height = 23
Top = 75 Top = 69
Width = 120 Width = 117
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export formula' Caption = 'Export formula'
TabOrder = 5 TabOrder = 5
@ -172,9 +173,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportCellColors AnchorSideTop.Control = cbExportCellColors
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 195 Top = 185
Width = 161 Width = 151
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export selected rows' Caption = 'Export selected rows'
TabOrder = 9 TabOrder = 9
@ -184,9 +185,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbOverwriteExisting AnchorSideTop.Control = cbOverwriteExisting
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 24 Height = 23
Top = 135 Top = 127
Width = 133 Width = 123
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Hide zero values' Caption = 'Hide zero values'
TabOrder = 10 TabOrder = 10
@ -196,9 +197,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbExportSelectedRows AnchorSideTop.Control = cbExportSelectedRows
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 6 Left = 6
Height = 24 Height = 23
Top = 225 Top = 214
Width = 103 Width = 99
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Merge cell''s' Caption = 'Merge cell''s'
TabOrder = 11 TabOrder = 11
@ -208,9 +209,9 @@ object RxDBGridExportSpreadSheet_ParamsForm: TRxDBGridExportSpreadSheet_ParamsFo
AnchorSideTop.Control = cbHideZeroValues AnchorSideTop.Control = cbHideZeroValues
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 280 Left = 280
Height = 24 Height = 23
Top = 165 Top = 156
Width = 139 Width = 135
BorderSpacing.Around = 6 BorderSpacing.Around = 6
Caption = 'Export group data' Caption = 'Export group data'
TabOrder = 12 TabOrder = 12

View File

@ -60,6 +60,7 @@ type
Label1: TLabel; Label1: TLabel;
Label3: TLabel; Label3: TLabel;
Label4: TLabel; Label4: TLabel;
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
private private
{ private declarations } { private declarations }
@ -68,7 +69,7 @@ type
end; end;
implementation implementation
uses rxdconst; uses rxdconst, rxconst, rxAppUtils;
{$R *.lfm} {$R *.lfm}
@ -91,5 +92,17 @@ begin
cbExportGrpData.Caption:=sExportGroupData; cbExportGrpData.Caption:=sExportGroupData;
end; end;
procedure TRxDBGridExportSpreadSheet_ParamsForm.FormCloseQuery(Sender: TObject;
var CanClose: boolean);
begin
CanClose:=(FileNameEdit1.FileName<>'');
if not CanClose then
begin
ErrorBox(sRxNotDefinedFileName);
FileNameEdit1.SetFocus;
Exit;
end;
end;
end. end.

View File

@ -93,6 +93,7 @@ resourcestring
sRxToolPanelEditor = 'Rx toolpanel editor'; sRxToolPanelEditor = 'Rx toolpanel editor';
sRxCloseFormValidatorEditor = 'Rx close form validator editor'; sRxCloseFormValidatorEditor = 'Rx close form validator editor';
sRxViewsPanelEditor = 'Rx views panel editor'; sRxViewsPanelEditor = 'Rx views panel editor';
sRxNotDefinedFileName = 'Not defined file name';
{ TRxHistoryNavigator } { TRxHistoryNavigator }
sHistoryDesc = 'History - "%s"'; sHistoryDesc = 'History - "%s"';