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:
parent
ba972e4bee
commit
7af9da7828
@ -231,6 +231,10 @@ msgstr ""
|
||||
msgid "MB"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxnotdefinedfilename
|
||||
msgid "Not defined file name"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxstrholdertexteditor
|
||||
msgid "Rx string holder editor"
|
||||
msgstr ""
|
||||
|
@ -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 ""
|
||||
|
@ -229,6 +229,10 @@ msgstr ""
|
||||
msgid "MB"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxnotdefinedfilename
|
||||
msgid "Not defined file name"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxstrholdertexteditor
|
||||
msgid "Rx string holder editor"
|
||||
msgstr ""
|
||||
|
@ -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"
|
||||
|
@ -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ü"
|
||||
|
@ -243,6 +243,10 @@ msgstr ""
|
||||
msgid "MB"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxnotdefinedfilename
|
||||
msgid "Not defined file name"
|
||||
msgstr ""
|
||||
|
||||
#: rxconst.srxstrholdertexteditor
|
||||
msgid "Rx string holder editor"
|
||||
msgstr ""
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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"';
|
||||
|
Loading…
Reference in New Issue
Block a user