diff --git a/components/rx/trunk/languages/rxconst.es.po b/components/rx/trunk/languages/rxconst.es.po index 3c66c249b..342bde81b 100644 --- a/components/rx/trunk/languages/rxconst.es.po +++ b/components/rx/trunk/languages/rxconst.es.po @@ -231,6 +231,10 @@ msgstr "" msgid "MB" msgstr "" +#: rxconst.srxnotdefinedfilename +msgid "Not defined file name" +msgstr "" + #: rxconst.srxstrholdertexteditor msgid "Rx string holder editor" msgstr "" diff --git a/components/rx/trunk/languages/rxconst.pl.po b/components/rx/trunk/languages/rxconst.pl.po index 4370711b1..743532860 100644 --- a/components/rx/trunk/languages/rxconst.pl.po +++ b/components/rx/trunk/languages/rxconst.pl.po @@ -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 "" diff --git a/components/rx/trunk/languages/rxconst.pot b/components/rx/trunk/languages/rxconst.pot index ba3222888..aeab08d02 100644 --- a/components/rx/trunk/languages/rxconst.pot +++ b/components/rx/trunk/languages/rxconst.pot @@ -229,6 +229,10 @@ msgstr "" msgid "MB" msgstr "" +#: rxconst.srxnotdefinedfilename +msgid "Not defined file name" +msgstr "" + #: rxconst.srxstrholdertexteditor msgid "Rx string holder editor" msgstr "" diff --git a/components/rx/trunk/languages/rxconst.ru.po b/components/rx/trunk/languages/rxconst.ru.po index 1b9eb3b6d..b9de84e55 100644 --- a/components/rx/trunk/languages/rxconst.ru.po +++ b/components/rx/trunk/languages/rxconst.ru.po @@ -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" diff --git a/components/rx/trunk/languages/rxconst.tr.po b/components/rx/trunk/languages/rxconst.tr.po index 8f782ffb6..f5c1ace02 100644 --- a/components/rx/trunk/languages/rxconst.tr.po +++ b/components/rx/trunk/languages/rxconst.tr.po @@ -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ü" diff --git a/components/rx/trunk/languages/rxconst.uk.po b/components/rx/trunk/languages/rxconst.uk.po index 031670377..1dbb02ea6 100644 --- a/components/rx/trunk/languages/rxconst.uk.po +++ b/components/rx/trunk/languages/rxconst.uk.po @@ -243,6 +243,10 @@ msgstr "" msgid "MB" msgstr "" +#: rxconst.srxnotdefinedfilename +msgid "Not defined file name" +msgstr "" + #: rxconst.srxstrholdertexteditor msgid "Rx string holder editor" msgstr "" diff --git a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas index d4b8e56f0..b3e2e76f6 100644 --- a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas +++ b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet.pas @@ -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; diff --git a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.lfm b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.lfm index 57c98421b..59e8ca6fa 100644 --- a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.lfm +++ b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.lfm @@ -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 diff --git a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas index e537ccbae..93a24fa71 100644 --- a/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas +++ b/components/rx/trunk/rxdbgrid_export_spreadsheet/rxdbgridexportspreadsheet_paramsunit.pas @@ -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. diff --git a/components/rx/trunk/rxtools/rxconst.pas b/components/rx/trunk/rxtools/rxconst.pas index b814152ea..3d241c65b 100644 --- a/components/rx/trunk/rxtools/rxconst.pas +++ b/components/rx/trunk/rxtools/rxconst.pas @@ -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"';