mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-21 02:17:19 +00:00
Optionally export all fields (unselected items as empty)
This commit is contained in:
parent
85589d9209
commit
070a28bd96
@ -109,6 +109,14 @@ For LoTW operations see <a href=h7.html><strong>here</strong></a>.
|
||||
</div>
|
||||
<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.
|
||||
For example, you can filter out all QSOs with DJ3 stations and print QSL labels for them.
|
||||
You will get such output:
|
||||
|
BIN
help/img/h70.png
BIN
help/img/h70.png
Binary file not shown.
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 50 KiB |
@ -1,7 +1,7 @@
|
||||
object frmExLabelPrint: TfrmExLabelPrint
|
||||
Left = 709
|
||||
Left = 2485
|
||||
Height = 522
|
||||
Top = 11
|
||||
Top = 248
|
||||
Width = 424
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'help/h22.html#bh4'
|
||||
@ -14,15 +14,15 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
OnClose = FormClose
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.0.4.0'
|
||||
LCLVersion = '2.0.10.0'
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = gchkExport
|
||||
AnchorSideTop.Control = edtQSOsToLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 5
|
||||
Height = 17
|
||||
Height = 15
|
||||
Top = 139
|
||||
Width = 34
|
||||
Width = 36
|
||||
BorderSpacing.Top = 11
|
||||
Caption = 'Print '
|
||||
ParentColor = False
|
||||
@ -32,21 +32,21 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edtQSOsToLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 94
|
||||
Height = 17
|
||||
Left = 96
|
||||
Height = 15
|
||||
Top = 139
|
||||
Width = 119
|
||||
Width = 121
|
||||
BorderSpacing.Left = 4
|
||||
Caption = 'QSOs on one label'
|
||||
ParentColor = False
|
||||
end
|
||||
object lblProgress: TLabel
|
||||
AnchorSideLeft.Control = chkMarkSent
|
||||
AnchorSideTop.Control = chkMarkSent
|
||||
AnchorSideTop.Control = chkKeepCsvStructure
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 5
|
||||
Height = 20
|
||||
Top = 431
|
||||
Top = 456
|
||||
Width = 412
|
||||
Alignment = taCenter
|
||||
AutoSize = False
|
||||
@ -93,7 +93,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 5
|
||||
Height = 97
|
||||
Top = 303
|
||||
Top = 302
|
||||
Width = 412
|
||||
Caption = ' Export to '
|
||||
ClientHeight = 79
|
||||
@ -106,7 +106,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 320
|
||||
Height = 25
|
||||
Top = 43
|
||||
Top = 42
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 3
|
||||
@ -119,7 +119,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = GroupBox1
|
||||
Left = 16
|
||||
Height = 34
|
||||
Height = 33
|
||||
Top = 6
|
||||
Width = 379
|
||||
BorderSpacing.Top = 6
|
||||
@ -131,8 +131,8 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = gchkExport
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 42
|
||||
Height = 34
|
||||
Left = 44
|
||||
Height = 33
|
||||
Top = 130
|
||||
Width = 48
|
||||
BorderSpacing.Left = 3
|
||||
@ -147,7 +147,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 5
|
||||
Height = 136
|
||||
Top = 167
|
||||
Top = 166
|
||||
Width = 412
|
||||
BorderSpacing.Top = 3
|
||||
Caption = ' Remarks '
|
||||
@ -160,7 +160,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
Left = 9
|
||||
Height = 23
|
||||
Top = 3
|
||||
Width = 198
|
||||
Width = 203
|
||||
BorderSpacing.Left = 9
|
||||
BorderSpacing.Top = 3
|
||||
Caption = 'Print ''Comment(s) to QSO'''
|
||||
@ -185,7 +185,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Control = rbOwnRemarks
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 17
|
||||
Height = 34
|
||||
Height = 33
|
||||
Top = 52
|
||||
Width = 376
|
||||
BorderSpacing.Top = 3
|
||||
@ -198,8 +198,8 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 9
|
||||
Height = 23
|
||||
Top = 87
|
||||
Width = 256
|
||||
Top = 86
|
||||
Width = 262
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'Remove separator (;) from remarks'
|
||||
TabOrder = 3
|
||||
@ -211,8 +211,8 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 5
|
||||
Height = 23
|
||||
Top = 403
|
||||
Width = 208
|
||||
Top = 402
|
||||
Width = 215
|
||||
BorderSpacing.Top = 3
|
||||
Caption = 'Mark QSLs sent after export'
|
||||
TabOrder = 4
|
||||
@ -223,7 +223,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 11
|
||||
Height = 25
|
||||
Top = 463
|
||||
Top = 488
|
||||
Width = 75
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 12
|
||||
@ -238,7 +238,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 174
|
||||
Height = 25
|
||||
Top = 463
|
||||
Top = 488
|
||||
Width = 75
|
||||
BorderSpacing.Top = 12
|
||||
Caption = 'Help'
|
||||
@ -252,7 +252,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 336
|
||||
Height = 25
|
||||
Top = 463
|
||||
Top = 488
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 12
|
||||
@ -268,7 +268,7 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
Left = 5
|
||||
Height = 23
|
||||
Top = 3
|
||||
Width = 127
|
||||
Width = 131
|
||||
BorderSpacing.Left = 5
|
||||
BorderSpacing.Top = 3
|
||||
Caption = 'Export all QSOs'
|
||||
@ -280,19 +280,31 @@ object frmExLabelPrint: TfrmExLabelPrint
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edtQSOsToLabel
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 229
|
||||
Left = 233
|
||||
Height = 25
|
||||
Top = 135
|
||||
Top = 134
|
||||
Width = 184
|
||||
BorderSpacing.Left = 16
|
||||
Caption = 'Choose fields for export'
|
||||
OnClick = btnExportFieldsPrefClick
|
||||
TabOrder = 9
|
||||
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
|
||||
DefaultExt = '.csv'
|
||||
Filter = 'CSV files|*.csv'
|
||||
left = 360
|
||||
top = 192
|
||||
Left = 360
|
||||
Top = 192
|
||||
end
|
||||
end
|
||||
|
@ -22,6 +22,7 @@ type
|
||||
btnHelp: TButton;
|
||||
btnExportFieldsPref : TButton;
|
||||
Cancel: TButton;
|
||||
chkKeepCsvStructure: TCheckBox;
|
||||
chkRemoveSep: TCheckBox;
|
||||
chkAllQSOs: TCheckBox;
|
||||
chkMarkSent: TCheckBox;
|
||||
@ -87,6 +88,8 @@ begin
|
||||
edtQSOsToLabel.Text := cqrini.ReadString('QslExport','QSOs','6');
|
||||
edtRemarks.Text := cqrini.ReadString('QslExport','Remarks','');
|
||||
chkRemoveSep.Checked := cqrini.ReadBool('QslExport','RemoveSep',True);
|
||||
chkKeepCsvStructure.Checked := cqrini.ReadBool('QSLExport', 'KeepCsvStructure', False);
|
||||
|
||||
if edtRemarks.Text <> '' then
|
||||
rbOwnRemarks.Checked
|
||||
end;
|
||||
@ -327,17 +330,36 @@ var
|
||||
Write(f,FormatDateTime('mm/dd/yyyy',dmData.Q.FieldByName('qsodate').AsDateTime),C_SEP);
|
||||
FormatSettings.DateSeparator:=sep;
|
||||
end;
|
||||
end
|
||||
else begin
|
||||
if chkKeepCsvStructure.Checked then
|
||||
Write(f,C_SEP);
|
||||
end;
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
begin
|
||||
@ -351,6 +373,15 @@ var
|
||||
Write(f,rst_tmp[2],C_SEP);
|
||||
Write(f,rst_tmp[3],C_SEP);
|
||||
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;
|
||||
if cqrini.ReadBool('QSLExport', 'RST_R', True) then
|
||||
begin
|
||||
@ -364,49 +395,142 @@ var
|
||||
Write(f,rst_tmp[2],C_SEP);
|
||||
Write(f,rst_tmp[3],C_SEP);
|
||||
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;
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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;
|
||||
|
||||
@ -540,7 +664,8 @@ begin
|
||||
cqrini.WriteString('QslExport','Path',edtFile.Text);
|
||||
cqrini.WriteString('QslExport','QSOs',edtQSOsToLabel.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;
|
||||
|
||||
procedure TfrmExLabelPrint.btnExportFieldsPrefClick(Sender : TObject);
|
||||
|
Loading…
Reference in New Issue
Block a user