Optionally export all fields (unselected items as empty)

This commit is contained in:
Florian Wolters 2021-03-22 23:02:06 +01:00
parent 85589d9209
commit 070a28bd96
No known key found for this signature in database
GPG Key ID: 48EA1E640798CA9A
4 changed files with 202 additions and 57 deletions

View File

@ -109,6 +109,14 @@ For LoTW operations see <a href=h7.html><strong>here</strong></a>.
</div> </div>
<br> <br>
<div align="justify">In order to keep the structure of the exported csv file you can check
checkbox 'Keep csv structure'. This the number of columns will always be the same and not
depend on whether specific export items are selected or not. Thus the number for each
column will stay the same and you do not need to re-design your glabels template upon
(un-)selecting items to export. Not selected items are simply exported as empty values.
</div>
<br>
<div align="justify">For both methods, the filtering potential can be utilized. <div align="justify">For both methods, the filtering potential can be utilized.
For example, you can filter out all QSOs with DJ3 stations and print QSL labels for them. For example, you can filter out all QSOs with DJ3 stations and print QSL labels for them.
You will get such output: You will get such output:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

@ -1,7 +1,7 @@
object frmExLabelPrint: TfrmExLabelPrint object frmExLabelPrint: TfrmExLabelPrint
Left = 709 Left = 2485
Height = 522 Height = 522
Top = 11 Top = 248
Width = 424 Width = 424
HelpType = htKeyword HelpType = htKeyword
HelpKeyword = 'help/h22.html#bh4' HelpKeyword = 'help/h22.html#bh4'
@ -14,15 +14,15 @@ object frmExLabelPrint: TfrmExLabelPrint
OnClose = FormClose OnClose = FormClose
OnShow = FormShow OnShow = FormShow
Position = poMainFormCenter Position = poMainFormCenter
LCLVersion = '2.0.4.0' LCLVersion = '2.0.10.0'
object Label1: TLabel object Label1: TLabel
AnchorSideLeft.Control = gchkExport AnchorSideLeft.Control = gchkExport
AnchorSideTop.Control = edtQSOsToLabel AnchorSideTop.Control = edtQSOsToLabel
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 5 Left = 5
Height = 17 Height = 15
Top = 139 Top = 139
Width = 34 Width = 36
BorderSpacing.Top = 11 BorderSpacing.Top = 11
Caption = 'Print ' Caption = 'Print '
ParentColor = False ParentColor = False
@ -32,21 +32,21 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtQSOsToLabel AnchorSideTop.Control = edtQSOsToLabel
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 94 Left = 96
Height = 17 Height = 15
Top = 139 Top = 139
Width = 119 Width = 121
BorderSpacing.Left = 4 BorderSpacing.Left = 4
Caption = 'QSOs on one label' Caption = 'QSOs on one label'
ParentColor = False ParentColor = False
end end
object lblProgress: TLabel object lblProgress: TLabel
AnchorSideLeft.Control = chkMarkSent AnchorSideLeft.Control = chkMarkSent
AnchorSideTop.Control = chkMarkSent AnchorSideTop.Control = chkKeepCsvStructure
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 5 Left = 5
Height = 20 Height = 20
Top = 431 Top = 456
Width = 412 Width = 412
Alignment = taCenter Alignment = taCenter
AutoSize = False AutoSize = False
@ -93,7 +93,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 5 Left = 5
Height = 97 Height = 97
Top = 303 Top = 302
Width = 412 Width = 412
Caption = ' Export to ' Caption = ' Export to '
ClientHeight = 79 ClientHeight = 79
@ -106,7 +106,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 320 Left = 320
Height = 25 Height = 25
Top = 43 Top = 42
Width = 75 Width = 75
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Top = 3 BorderSpacing.Top = 3
@ -119,7 +119,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideLeft.Side = asrCenter AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = GroupBox1 AnchorSideTop.Control = GroupBox1
Left = 16 Left = 16
Height = 34 Height = 33
Top = 6 Top = 6
Width = 379 Width = 379
BorderSpacing.Top = 6 BorderSpacing.Top = 6
@ -131,8 +131,8 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gchkExport AnchorSideTop.Control = gchkExport
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 42 Left = 44
Height = 34 Height = 33
Top = 130 Top = 130
Width = 48 Width = 48
BorderSpacing.Left = 3 BorderSpacing.Left = 3
@ -147,7 +147,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 5 Left = 5
Height = 136 Height = 136
Top = 167 Top = 166
Width = 412 Width = 412
BorderSpacing.Top = 3 BorderSpacing.Top = 3
Caption = ' Remarks ' Caption = ' Remarks '
@ -160,7 +160,7 @@ object frmExLabelPrint: TfrmExLabelPrint
Left = 9 Left = 9
Height = 23 Height = 23
Top = 3 Top = 3
Width = 198 Width = 203
BorderSpacing.Left = 9 BorderSpacing.Left = 9
BorderSpacing.Top = 3 BorderSpacing.Top = 3
Caption = 'Print ''Comment(s) to QSO''' Caption = 'Print ''Comment(s) to QSO'''
@ -185,7 +185,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Control = rbOwnRemarks AnchorSideTop.Control = rbOwnRemarks
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 17 Left = 17
Height = 34 Height = 33
Top = 52 Top = 52
Width = 376 Width = 376
BorderSpacing.Top = 3 BorderSpacing.Top = 3
@ -198,8 +198,8 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 9 Left = 9
Height = 23 Height = 23
Top = 87 Top = 86
Width = 256 Width = 262
BorderSpacing.Top = 1 BorderSpacing.Top = 1
Caption = 'Remove separator (;) from remarks' Caption = 'Remove separator (;) from remarks'
TabOrder = 3 TabOrder = 3
@ -211,8 +211,8 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 5 Left = 5
Height = 23 Height = 23
Top = 403 Top = 402
Width = 208 Width = 215
BorderSpacing.Top = 3 BorderSpacing.Top = 3
Caption = 'Mark QSLs sent after export' Caption = 'Mark QSLs sent after export'
TabOrder = 4 TabOrder = 4
@ -223,7 +223,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 11 Left = 11
Height = 25 Height = 25
Top = 463 Top = 488
Width = 75 Width = 75
BorderSpacing.Left = 6 BorderSpacing.Left = 6
BorderSpacing.Top = 12 BorderSpacing.Top = 12
@ -238,7 +238,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
Left = 174 Left = 174
Height = 25 Height = 25
Top = 463 Top = 488
Width = 75 Width = 75
BorderSpacing.Top = 12 BorderSpacing.Top = 12
Caption = 'Help' Caption = 'Help'
@ -252,7 +252,7 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 336 Left = 336
Height = 25 Height = 25
Top = 463 Top = 488
Width = 75 Width = 75
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.Top = 12 BorderSpacing.Top = 12
@ -268,7 +268,7 @@ object frmExLabelPrint: TfrmExLabelPrint
Left = 5 Left = 5
Height = 23 Height = 23
Top = 3 Top = 3
Width = 127 Width = 131
BorderSpacing.Left = 5 BorderSpacing.Left = 5
BorderSpacing.Top = 3 BorderSpacing.Top = 3
Caption = 'Export all QSOs' Caption = 'Export all QSOs'
@ -280,19 +280,31 @@ object frmExLabelPrint: TfrmExLabelPrint
AnchorSideLeft.Side = asrBottom AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtQSOsToLabel AnchorSideTop.Control = edtQSOsToLabel
AnchorSideTop.Side = asrCenter AnchorSideTop.Side = asrCenter
Left = 229 Left = 233
Height = 25 Height = 25
Top = 135 Top = 134
Width = 184 Width = 184
BorderSpacing.Left = 16 BorderSpacing.Left = 16
Caption = 'Choose fields for export' Caption = 'Choose fields for export'
OnClick = btnExportFieldsPrefClick OnClick = btnExportFieldsPrefClick
TabOrder = 9 TabOrder = 9
end end
object chkKeepCsvStructure: TCheckBox
AnchorSideLeft.Control = GroupBox1
AnchorSideTop.Control = chkMarkSent
AnchorSideTop.Side = asrBottom
Left = 5
Height = 23
Top = 428
Width = 149
BorderSpacing.Top = 3
Caption = 'Keep csv structure'
TabOrder = 10
end
object dlgSave: TSaveDialog object dlgSave: TSaveDialog
DefaultExt = '.csv' DefaultExt = '.csv'
Filter = 'CSV files|*.csv' Filter = 'CSV files|*.csv'
left = 360 Left = 360
top = 192 Top = 192
end end
end end

View File

@ -22,6 +22,7 @@ type
btnHelp: TButton; btnHelp: TButton;
btnExportFieldsPref : TButton; btnExportFieldsPref : TButton;
Cancel: TButton; Cancel: TButton;
chkKeepCsvStructure: TCheckBox;
chkRemoveSep: TCheckBox; chkRemoveSep: TCheckBox;
chkAllQSOs: TCheckBox; chkAllQSOs: TCheckBox;
chkMarkSent: TCheckBox; chkMarkSent: TCheckBox;
@ -87,6 +88,8 @@ begin
edtQSOsToLabel.Text := cqrini.ReadString('QslExport','QSOs','6'); edtQSOsToLabel.Text := cqrini.ReadString('QslExport','QSOs','6');
edtRemarks.Text := cqrini.ReadString('QslExport','Remarks',''); edtRemarks.Text := cqrini.ReadString('QslExport','Remarks','');
chkRemoveSep.Checked := cqrini.ReadBool('QslExport','RemoveSep',True); chkRemoveSep.Checked := cqrini.ReadBool('QslExport','RemoveSep',True);
chkKeepCsvStructure.Checked := cqrini.ReadBool('QSLExport', 'KeepCsvStructure', False);
if edtRemarks.Text <> '' then if edtRemarks.Text <> '' then
rbOwnRemarks.Checked rbOwnRemarks.Checked
end; end;
@ -327,17 +330,36 @@ var
Write(f,FormatDateTime('mm/dd/yyyy',dmData.Q.FieldByName('qsodate').AsDateTime),C_SEP); Write(f,FormatDateTime('mm/dd/yyyy',dmData.Q.FieldByName('qsodate').AsDateTime),C_SEP);
FormatSettings.DateSeparator:=sep; FormatSettings.DateSeparator:=sep;
end; end;
end
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end; end;
if cqrini.ReadBool('QSLExport', 'time_on', True) then if cqrini.ReadBool('QSLExport', 'time_on', True) then
Write(f,dmData.Q.FieldByName('time_on').AsString,C_SEP); Write(f,dmData.Q.FieldByName('time_on').AsString,C_SEP)
else
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
if cqrini.ReadBool('QSLExport', 'time_off', True) then if cqrini.ReadBool('QSLExport', 'time_off', True) then
Write(f,dmData.Q.FieldByName('time_off').AsString,C_SEP); Write(f,dmData.Q.FieldByName('time_off').AsString,C_SEP)
else
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
if cqrini.ReadBool('QSLExport', 'CallSign', True) then if cqrini.ReadBool('QSLExport', 'CallSign', True) then
Write(f,dmData.Q.FieldByName('callsign').AsString,C_SEP); Write(f,dmData.Q.FieldByName('callsign').AsString,C_SEP)
else
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
if cqrini.ReadBool('QSLExport', 'Mode', True) then if cqrini.ReadBool('QSLExport', 'Mode', True) then
Write(f,dmData.Q.FieldByName('mode').AsString,C_SEP); Write(f,dmData.Q.FieldByName('mode').AsString,C_SEP)
else
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
if cqrini.ReadBool('QSLExport', 'Freq', True) then if cqrini.ReadBool('QSLExport', 'Freq', True) then
Write(f,FloatToStr(dmData.Q.FieldByName('freq').AsFloat),C_SEP); Write(f,FloatToStr(dmData.Q.FieldByName('freq').AsFloat),C_SEP)
else
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
if cqrini.ReadBool('QSLExport', 'RST_S', True) then if cqrini.ReadBool('QSLExport', 'RST_S', True) then
begin begin
@ -351,6 +373,15 @@ var
Write(f,rst_tmp[2],C_SEP); Write(f,rst_tmp[2],C_SEP);
Write(f,rst_tmp[3],C_SEP); Write(f,rst_tmp[3],C_SEP);
end; end;
end
else begin
if chkKeepCsvStructure.Checked then
begin
if not cqrini.ReadBool('QSLExport','SplitRST_R',False) then
Write(f,C_SEP)
else
Write(f,C_SEP,C_SEP,C_SEP);
end;
end; end;
if cqrini.ReadBool('QSLExport', 'RST_R', True) then if cqrini.ReadBool('QSLExport', 'RST_R', True) then
begin begin
@ -364,49 +395,142 @@ var
Write(f,rst_tmp[2],C_SEP); Write(f,rst_tmp[2],C_SEP);
Write(f,rst_tmp[3],C_SEP); Write(f,rst_tmp[3],C_SEP);
end; end;
end
else begin
if chkKeepCsvStructure.Checked then
begin
if not cqrini.ReadBool('QSLExport','SplitRST_R',False) then
Write(f,C_SEP)
else
Write(f,C_SEP,C_SEP,C_SEP);
end;
end; end;
if cqrini.ReadBool('QSLExport', 'Name', True) then if cqrini.ReadBool('QSLExport', 'Name', True) then
Write(f,dmData.Q.FieldByName('name').AsString,C_SEP); Write(f,dmData.Q.FieldByName('name').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'QTH', True) then if cqrini.ReadBool('QSLExport', 'QTH', True) then
Write(f,dmData.Q.FieldByName('qth').AsString,C_SEP); Write(f,dmData.Q.FieldByName('qth').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'band', True) then if cqrini.ReadBool('QSLExport', 'band', True) then
Write(f,dmData.Q.FieldByName('band').AsString,C_SEP); Write(f,dmData.Q.FieldByName('band').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'Propagation', True) then if cqrini.ReadBool('QSLExport', 'Propagation', True) then
Write(f,dmData.Q.FieldByName('prop_mode').AsString,C_SEP); Write(f,dmData.Q.FieldByName('prop_mode').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'Satellite', True) then if cqrini.ReadBool('QSLExport', 'Satellite', True) then
Write(f,dmData.Q.FieldByName('satellite').AsString,C_SEP); Write(f,dmData.Q.FieldByName('satellite').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'ContestName', True) then if cqrini.ReadBool('QSLExport', 'ContestName', True) then
Write(f, dmData.Q.FieldByName('contestname').AsString,C_SEP); Write(f, dmData.Q.FieldByName('contestname').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'QSL_S', True) then if cqrini.ReadBool('QSLExport', 'QSL_S', True) then
Write(f,dmData.Q.FieldByName('qsl_s').AsString,C_SEP); Write(f,dmData.Q.FieldByName('qsl_s').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'QSL_R', True) then if cqrini.ReadBool('QSLExport', 'QSL_R', True) then
Write(f,dmData.Q.FieldByName('qsl_r').AsString,C_SEP); Write(f,dmData.Q.FieldByName('qsl_r').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'QSL_VIA', True) then if cqrini.ReadBool('QSLExport', 'QSL_VIA', True) then
Write(f,dmData.Q.FieldByName('qsl_via').AsString,C_SEP); Write(f,dmData.Q.FieldByName('qsl_via').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'locator', True) then if cqrini.ReadBool('QSLExport', 'locator', True) then
Write(f,dmData.Q.FieldByName('loc').AsString,C_SEP); Write(f,dmData.Q.FieldByName('loc').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'MyLoc', True) then if cqrini.ReadBool('QSLExport', 'MyLoc', True) then
Write(f,dmData.Q.FieldByName('my_loc').AsString,C_SEP); Write(f,dmData.Q.FieldByName('my_loc').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'Distance', True) then if cqrini.ReadBool('QSLExport', 'Distance', True) then
Write(f,frmMain.CalcQrb(dmData.Q.FieldByName('my_loc').AsString,dmData.Q.FieldByName('loc').AsString,False),C_SEP); Write(f,frmMain.CalcQrb(dmData.Q.FieldByName('my_loc').AsString,dmData.Q.FieldByName('loc').AsString,False),C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'IOTA', True) then if cqrini.ReadBool('QSLExport', 'IOTA', True) then
Write(f,dmData.Q.FieldByName('iota').AsString,C_SEP); Write(f,dmData.Q.FieldByName('iota').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'award', True) then if cqrini.ReadBool('QSLExport', 'award', True) then
Write(f,dmData.Q.FieldByName('award').AsString,C_SEP); Write(f,dmData.Q.FieldByName('award').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'power', True) then if cqrini.ReadBool('QSLExport', 'power', True) then
Write(f,dmData.Q.FieldByName('pwr').AsString,C_SEP); Write(f,dmData.Q.FieldByName('pwr').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'Remarks', True) then if cqrini.ReadBool('QSLExport', 'Remarks', True) then
Write(f,dmData.Q.FieldByName('remarks').AsString,C_SEP); Write(f,dmData.Q.FieldByName('remarks').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'QSLMsg', True) then if cqrini.ReadBool('QSLExport', 'QSLMsg', True) then
Write(f,dmData.Q.FieldByName('qslmsg').AsString,C_SEP); Write(f,dmData.Q.FieldByName('qslmsg').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'ContestNrS', True) then if cqrini.ReadBool('QSLExport', 'ContestNrS', True) then
Write(f,dmData.Q.FieldByName('stx').AsString ,C_SEP); Write(f,dmData.Q.FieldByName('stx').AsString ,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'ContestMsgS', True) then if cqrini.ReadBool('QSLExport', 'ContestMsgS', True) then
Write(f,dmData.Q.FieldByName('stx_string').AsString,C_SEP); Write(f,dmData.Q.FieldByName('stx_string').AsString,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'ContestNrR', True) then if cqrini.ReadBool('QSLExport', 'ContestNrR', True) then
Write(f,dmData.Q.FieldByName('srx').AsString ,C_SEP); Write(f,dmData.Q.FieldByName('srx').AsString ,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
if cqrini.ReadBool('QSLExport', 'ContestMsgR', True) then if cqrini.ReadBool('QSLExport', 'ContestMsgR', True) then
Write(f,dmData.Q.FieldByName('srx_string').AsString ,C_SEP); Write(f,dmData.Q.FieldByName('srx_string').AsString ,C_SEP)
else begin
if chkKeepCsvStructure.Checked then
Write(f,C_SEP);
end;
end; end;
@ -540,7 +664,8 @@ begin
cqrini.WriteString('QslExport','Path',edtFile.Text); cqrini.WriteString('QslExport','Path',edtFile.Text);
cqrini.WriteString('QslExport','QSOs',edtQSOsToLabel.Text); cqrini.WriteString('QslExport','QSOs',edtQSOsToLabel.Text);
cqrini.WriteString('QslExport','Remarks',edtRemarks.Text); cqrini.WriteString('QslExport','Remarks',edtRemarks.Text);
cqrini.ReadBool('QslExport','RemoveSep',chkRemoveSep.Checked) cqrini.WriteBool('QSLExport', 'KeepCsvStructure', chkKeepCsvStructure.Checked);
cqrini.WriteBool('QslExport','RemoveSep',chkRemoveSep.Checked)
end; end;
procedure TfrmExLabelPrint.btnExportFieldsPrefClick(Sender : TObject); procedure TfrmExLabelPrint.btnExportFieldsPrefClick(Sender : TObject);