From 5fe4b3bbc606202d03bf3307b3981ae0e563bc68 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sat, 30 Apr 2011 06:06:52 +0000 Subject: [PATCH] Display actually used control characters even if they cannot be changed, so the user sees exactly what's happening. --- source/exportgrid.dfm | 3 ++ source/exportgrid.pas | 65 +++++++++++++++++++++++++++++-------------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/source/exportgrid.dfm b/source/exportgrid.dfm index bf2f63a3..120e57fc 100644 --- a/source/exportgrid.dfm +++ b/source/exportgrid.dfm @@ -199,6 +199,7 @@ object frmExportGrid: TfrmExportGrid RightButton.Visible = True TabOrder = 1 Text = ';' + OnChange = editCSVChange OnRightButtonClick = editCSVRightButtonClick end object editEncloser: TButtonedEdit @@ -211,6 +212,7 @@ object frmExportGrid: TfrmExportGrid RightButton.ImageIndex = 108 RightButton.Visible = True TabOrder = 2 + OnChange = editCSVChange OnRightButtonClick = editCSVRightButtonClick end object editTerminator: TButtonedEdit @@ -224,6 +226,7 @@ object frmExportGrid: TfrmExportGrid RightButton.Visible = True TabOrder = 3 Text = '\r\n' + OnChange = editCSVChange OnRightButtonClick = editCSVRightButtonClick end end diff --git a/source/exportgrid.pas b/source/exportgrid.pas index 2ac98e4c..3f85370f 100644 --- a/source/exportgrid.pas +++ b/source/exportgrid.pas @@ -47,9 +47,11 @@ type procedure btnOKClick(Sender: TObject); procedure editFilenameChange(Sender: TObject); procedure FormShow(Sender: TObject); + procedure editCSVChange(Sender: TObject); private { Private declarations } FCSVEditor: TButtonedEdit; + FCSVSeparator, FCSVEncloser, FCSVTerminator: String; FGrid: TVirtualStringTree; FRecentFiles: TStringList; procedure SaveDialogTypeChange(Sender: TObject); @@ -83,9 +85,9 @@ begin comboEncoding.ItemIndex := GetRegValue(REGNAME_GEXP_ENCODING, 4); grpFormat.ItemIndex := GetRegValue(REGNAME_GEXP_FORMAT, grpFormat.ItemIndex); chkColumnHeader.Checked := GetRegValue(REGNAME_GEXP_COLUMNNAMES, chkColumnHeader.Checked); - editSeparator.Text := GetRegValue(REGNAME_GEXP_SEPARATOR, editSeparator.Text); - editEncloser.Text := GetRegValue(REGNAME_GEXP_ENCLOSER, editEncloser.Text); - editTerminator.Text := GetRegValue(REGNAME_GEXP_TERMINATOR, editTerminator.Text); + FCSVSeparator := GetRegValue(REGNAME_GEXP_SEPARATOR, editSeparator.Text); + FCSVEncloser := GetRegValue(REGNAME_GEXP_ENCLOSER, editEncloser.Text); + FCSVTerminator := GetRegValue(REGNAME_GEXP_TERMINATOR, editTerminator.Text); ValidateControls(Sender); end; @@ -102,9 +104,9 @@ begin MainReg.WriteInteger(REGNAME_GEXP_FORMAT, grpFormat.ItemIndex); MainReg.WriteInteger(REGNAME_GEXP_SELECTION, grpSelection.ItemIndex); MainReg.WriteBool(REGNAME_GEXP_COLUMNNAMES, chkColumnHeader.Checked); - MainReg.WriteString(REGNAME_GEXP_SEPARATOR, editSeparator.Text); - MainReg.WriteString(REGNAME_GEXP_ENCLOSER, editEncloser.Text); - MainReg.WriteString(REGNAME_GEXP_TERMINATOR, editTerminator.Text); + MainReg.WriteString(REGNAME_GEXP_SEPARATOR, FCSVSeparator); + MainReg.WriteString(REGNAME_GEXP_ENCLOSER, FCSVEncloser); + MainReg.WriteString(REGNAME_GEXP_TERMINATOR, FCSVTerminator); end; end; @@ -130,6 +132,28 @@ procedure TfrmExportGrid.ValidateControls(Sender: TObject); var Enable: Boolean; begin + // Display the actually used control characters, even if they cannot be changed + case ExportFormat of + efTSV: begin + if radioOutputCopyToClipboard.Checked then + editSeparator.Text := '\t' + else + editSeparator.Text := ','; + editEncloser.Text := '"'; + editTerminator.Text := '\r\n'; + end; + efCSV: begin + editSeparator.Text := FCSVSeparator; + editEncloser.Text := FCSVEncloser; + editTerminator.Text := FCSVTerminator; + end; + else begin + editSeparator.Text := ''; + editEncloser.Text := ''; + editTerminator.Text := ''; + end; + end; + Enable := ExportFormat = efCSV; lblSeparator.Enabled := Enable; editSeparator.Enabled := Enable; @@ -199,6 +223,17 @@ begin end; +procedure TfrmExportGrid.editCSVChange(Sender: TObject); +begin + // Remember csv settings + if (ExportFormat = efCSV) and TControl(Sender).Enabled then begin + FCSVSeparator := editSeparator.Text; + FCSVEncloser := editEncloser.Text; + FCSVTerminator := editTerminator.Text; + end; +end; + + procedure TfrmExportGrid.SaveDialogTypeChange(Sender: TObject); var Dialog: TSaveDialog; @@ -340,21 +375,9 @@ begin end; efTSV, efCSV: begin - case ExportFormat of - efTSV: begin - if radioOutputCopyToClipboard.Checked then - Separator := #9 - else - Separator := ','; - Encloser := '"'; - Terminator := CRLF; - end; - efCSV: begin - Separator := GridData.Connection.UnescapeString(editSeparator.Text); - Encloser := GridData.Connection.UnescapeString(editEncloser.Text); - Terminator := GridData.Connection.UnescapeString(editTerminator.Text); - end; - end; + Separator := GridData.Connection.UnescapeString(editSeparator.Text); + Encloser := GridData.Connection.UnescapeString(editEncloser.Text); + Terminator := GridData.Connection.UnescapeString(editTerminator.Text); if chkColumnHeader.Checked then begin Col := Grid.Header.Columns.GetFirstVisibleColumn; while Col > NoColumn do begin