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"
msgstr ""
#: rxconst.srxnotdefinedfilename
msgid "Not defined file name"
msgstr ""
#: rxconst.srxstrholdertexteditor
msgid "Rx string holder editor"
msgstr ""

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -60,6 +60,7 @@ type
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
@ -68,7 +69,7 @@ type
end;
implementation
uses rxdconst;
uses rxdconst, rxconst, rxAppUtils;
{$R *.lfm}
@ -91,5 +92,17 @@ begin
cbExportGrpData.Caption:=sExportGroupData;
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.

View File

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