mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-21 10:27:17 +00:00
A fix to Cabrillo export
Trying to make it little bit more usefull for different contests.
This is not perfect exporter, but may be enough for "Sunday contester" who is also happy for contest logging form.
There is a limited change to modify QSO line content to make it fit for contest qsos exported.
Settigs are saved in log settings as "last used", but can also be saved to named template files for loadding when time next needed.
Filter must be used to select qsos before export works. If Contest filter is used the name of the contest can be taken from filtered results. It also is offered as default file name when saving template settings.
There is no score counting as it differs so much between contests. Instead export will give some statistic results that may help for manual score counting.
Help file is updated.
Squashed commit of the following:
commit db6c8f6db873acbb37804897b97b75022fe682d3
Author: OH1KH <oh1kh@sral.fi>
Date: Sat Jul 11 13:47:29 2020 +0300
Expanded exchange selector list.
commit 5e60fcc725a0a3a2ed8fddc298e3fe8fdb95b650
Author: OH1KH <oh1kh@sral.fi>
Date: Sat Jul 11 10:19:58 2020 +0300
Small fix to Frm Flt button
commit f6d97e14936f88b8e9906c329457b9f7ac10c9ee
Author: OH1KH <oh1kh@sral.fi>
Date: Sat Jul 11 09:48:10 2020 +0300
Added button to get contest name from contestfilter result. Added contest name as defaut template file name. Fixed help.
commit 67fc1c095ff645abf45fff70efe3b5d4c1727e48
Author: OH1KH <oh1kh@sral.fi>
Date: Thu Jul 9 19:49:37 2020 +0300
Found Contest Filter! Not part of project. Adding lfm failed somehow, pas is ok.
commit 618d9f2136ce755434ba57fd792ff0203292e547
Author: OH1KH <oh1kh@sral.fi>
Date: Thu Jul 9 19:19:05 2020 +0300
Some statistics and Help update
commit dbc575814d494ff1fafad3f96acd038e75800ddd
Merge: 9b69ab0 f72d834
Author: OH1KH <oh1kh@sral.fi>
Date: Thu Jul 9 10:06:24 2020 +0300
Merge branch 'master' into fix_cabri
commit 9b69ab07dc59a35f0e158576e05e2615b764e389
Author: OH1KH <oh1kh@sral.fi>
Date: Thu Jul 9 10:00:17 2020 +0300
Font setting routine call.Save/Load settings to template. /tmp/CabrilloReject.log for error qsos. Add setting for count qsos to country (for statistics)
commit 519fce180651ec621cade7aea4a625d56d2924f8
Author: OH1KH <oh1kh@sral.fi>
Date: Thu Jul 9 07:07:24 2020 +0300
todo update
commit 698895efd1514143a97b8a1189c5c4644bc942db
Author: OH1KH <oh1kh@sral.fi>
Date: Wed Jul 8 20:37:40 2020 +0300
Contest name auto complete on. QSO order reversed (from last to Bof)
commit c2706838eff6ffae02acc3d65d93bb42e052bd85
Author: OH1KH <oh1kh@sral.fi>
Date: Wed Jul 8 20:01:48 2020 +0300
QSO-line 'designer': first working version (more test needed)
commit dd2193930e0a2f4b262c41268821cdb23fe0e490
Author: OH1KH <oh1kh@sral.fi>
Date: Wed Jul 8 15:53:19 2020 +0300
Added category-mode auto detect. Dropped Q query, used fiters qCQRLOG query result instead
commit 487240676cfe4eacc14a0727c06a11569ccffe55
Author: OH1KH <oh1kh@sral.fi>
Date: Wed Jul 8 13:13:59 2020 +0300
Added view to set up QSO-line outlook (prelimenary)
commit 20da7cf99758234c1e6c4205501254e278bff8a6
Author: OH1KH <oh1kh@sral.fi>
Date: Tue Jul 7 16:28:00 2020 +0300
Added warning if station/contest info is empty.Added contest name loading like contest form (causes pango layout utf-8 warnings (??)). Fixed form layout and anchors.
commit 3e2eebd21581d31e6e8ed5be3742b4e1d9098d9a
Author: OH1KH <oh1kh@sral.fi>
Date: Tue Jul 7 11:12:21 2020 +0300
First changes to cabrillo:band2freq,category-band, etc.
This commit is contained in:
parent
f72d8348e7
commit
96c92cb631
25
help/h3.html
25
help/h3.html
@ -94,13 +94,26 @@
|
||||
used for this contest.
|
||||
<p align=center><img src=img/line.png></p>
|
||||
<p><a name=ah28><strong>Cabrillo export</strong></a><br><br>
|
||||
This dialog can be used to export contest logs in Carbillo format. For this to work properly a
|
||||
filter has to be set. All necessary fields have to be filled in order for this to export a
|
||||
suitable log file. If you choose this export you will see the follwing window.
|
||||
This dialog can be used to export contest logs in Carbillo format. Cabrillo is very compilcated to export as
|
||||
almost all contests have their own QSO line layout and score counting. That's why Export has no score counting, but it offers
|
||||
some statistics from exported qsos to help manual counting of claimed score.<br><br>
|
||||
For export <b>Qso list/filter/create</b> or <b>Qso list/filter/Contest filter </b>has to be set to select qsos to be exported.<br>
|
||||
If you used <b>Qso list/filter/Contest filter </b> you can press button <b>Frm Flt</b> to get contest name from filtered result.
|
||||
<br><br>QSO-line header follows most used layout and can not be modified, except <b>width of callsign space</b> that affects both calls (my&wkd).<br>
|
||||
Info sent and rcvd can be modified using selections. Some contests do not use <b>reports, they can be omitted from checbox.</b><br>
|
||||
Exchange1 and Exchange2 can contain data by selected by selectors with <b>given space width</b> 1-99. If empty they are ignored.<br>
|
||||
<B>TX count</b> is the transmitter count at the end of line. It can also be empty and so ingnored<br>
|
||||
Many template layouts to study can be found from <b> http://www.contestlogchecker.com/cabrillo-templates.html</b>
|
||||
<br><br>
|
||||
<img src=img/h45g.png><br><br>
|
||||
You need to set the filename to export to and select an appropriate rule set for the calculation
|
||||
of your points in the contest.
|
||||
With <b>Count pfx</b> user can get statistic count from qsos to certain country. Type in callsign prefix of country. If export thinks prefix is wrong
|
||||
it clears column when moved away from it. Then try again. Example: VA is not ok, but VA1 will turn accepted as VE.
|
||||
<br><br>
|
||||
Export remebers last used settings (by used log). You can also save and load settings for different contests using <b>save and load buttons</b>.
|
||||
<br> At bottom of form there is prograss indicator and after export there is some statistics and possible error message.
|
||||
<br><br>
|
||||
As cabrillo export output is very basic you may need to edit exported file afterwards with text editor to suit your purposes!
|
||||
<br><br>
|
||||
<img src=img/h45g.png> <img src=img/h45gg.png><br><br>
|
||||
<p align=center><img src=img/line.png></p>
|
||||
<p><a name=ah29><strong>Program version update:</strong></a><br><br>
|
||||
Ubuntu 16.04, 17.10, 18.04 users can use CQRLOG’s repository on Launchpad. To add repository to your system, put into terminal this:<br/>
|
||||
|
BIN
help/img/h45.png
BIN
help/img/h45.png
Binary file not shown.
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 48 KiB |
Binary file not shown.
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 39 KiB |
BIN
help/img/h45gg.png
Normal file
BIN
help/img/h45gg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
@ -105,7 +105,7 @@
|
||||
<MinVersion Major="1" Minor="2" Release="1" Valid="True"/>
|
||||
</Item10>
|
||||
</RequiredPackages>
|
||||
<Units Count="111">
|
||||
<Units Count="112">
|
||||
<Unit0>
|
||||
<Filename Value="cqrlog.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -821,17 +821,26 @@
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit108>
|
||||
<Unit109>
|
||||
<Filename Value="fcabrilloexport.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="fCabrilloExport"/>
|
||||
</Unit109>
|
||||
<Unit110>
|
||||
<Filename Value="fDOKStat.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmDOKStat"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit109>
|
||||
<Unit110>
|
||||
<Filename Value="fCabrilloExport.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmCabrilloExport"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit110>
|
||||
<Unit111>
|
||||
<Filename Value="fContestFilter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmContestFilter"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit111>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -24,7 +24,7 @@ uses
|
||||
fNewCommentToCall, fFindCommentToCall, frExportPref, fExportPref,
|
||||
fWorkedGrids, fPropDK0WCY, fRemind, fContest, fMonWsjtx, fXfldigi,
|
||||
dMembership, dSatellite, uRigControl, uRotControl, azidis3, aziloc,
|
||||
fCabrilloExport, fDOKStat;
|
||||
fDOKStat, fCabrilloExport;
|
||||
var
|
||||
Splash : TfrmSplash;
|
||||
|
||||
|
@ -1,182 +1,811 @@
|
||||
object frmCabrilloExport: TfrmCabrilloExport
|
||||
Left = 758
|
||||
Height = 414
|
||||
Top = 300
|
||||
Left = 644
|
||||
Height = 687
|
||||
Top = 45
|
||||
Width = 516
|
||||
Caption = 'Export for contests'
|
||||
ClientHeight = 414
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'help/h3.html#ah28'
|
||||
Caption = 'Cabrillo export'
|
||||
ClientHeight = 687
|
||||
ClientWidth = 516
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
LCLVersion = '1.8.2.0'
|
||||
object Label1: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 8
|
||||
Width = 66
|
||||
Caption = 'Filename:'
|
||||
LCLVersion = '2.0.8.0'
|
||||
object lblCabfileName: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 6
|
||||
Width = 127
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Filename to export:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtFileName: TEdit
|
||||
Left = 8
|
||||
Height = 25
|
||||
Top = 32
|
||||
object edtCabFileName: TEdit
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = lblCabfileName
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 33
|
||||
Hint = 'Write export file name and path or press Browse'
|
||||
Top = 33
|
||||
Width = 421
|
||||
BorderSpacing.Top = 12
|
||||
TabOrder = 0
|
||||
end
|
||||
object Button1: TButton
|
||||
Left = 433
|
||||
object btnCabBrowse: TButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edtCabFileName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 435
|
||||
Height = 25
|
||||
Top = 34
|
||||
Top = 37
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Browse'
|
||||
OnClick = Button1Click
|
||||
OnClick = btnCabBrowseClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnClose: TButton
|
||||
Left = 434
|
||||
object btnCabClose: TButton
|
||||
AnchorSideTop.Control = pbCabExport
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 435
|
||||
Height = 25
|
||||
Top = 368
|
||||
Top = 644
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Cancel = True
|
||||
Caption = 'Close'
|
||||
ModalResult = 2
|
||||
TabOrder = 4
|
||||
TabOrder = 14
|
||||
end
|
||||
object btnExport: TButton
|
||||
Left = 345
|
||||
object btnCabExport: TButton
|
||||
AnchorSideTop.Control = pbCabExport
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = btnCabClose
|
||||
Left = 354
|
||||
Height = 25
|
||||
Top = 368
|
||||
Top = 644
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Export'
|
||||
OnClick = btnExportClick
|
||||
TabOrder = 3
|
||||
OnClick = btnCabExportClick
|
||||
TabOrder = 12
|
||||
end
|
||||
object pbExport: TProgressBar
|
||||
Left = 8
|
||||
object pbCabExport: TProgressBar
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 20
|
||||
Top = 370
|
||||
Top = 646
|
||||
Width = 264
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 21
|
||||
Step = 1
|
||||
TabOrder = 5
|
||||
TabOrder = 13
|
||||
TabStop = True
|
||||
end
|
||||
object lblDone: TLabel
|
||||
Left = 289
|
||||
Height = 17
|
||||
Top = 372
|
||||
Width = 37
|
||||
object lblCabDone: TLabel
|
||||
AnchorSideLeft.Control = pbCabExport
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = pbCabExport
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 282
|
||||
Height = 15
|
||||
Top = 649
|
||||
Width = 34
|
||||
BorderSpacing.Left = 12
|
||||
Caption = 'Done'
|
||||
ParentColor = False
|
||||
Visible = False
|
||||
end
|
||||
object lblContestName: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 72
|
||||
Width = 99
|
||||
object lblCabContestName: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = cmbCabContestName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 75
|
||||
Width = 95
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Contest name:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtContestName: TEdit
|
||||
AnchorSideLeft.Control = lblContestName
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = lblContestName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 127
|
||||
Height = 25
|
||||
Top = 68
|
||||
Width = 301
|
||||
BorderSpacing.Left = 20
|
||||
TabOrder = 2
|
||||
end
|
||||
object lblError: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 344
|
||||
Width = 98
|
||||
object lblCabError: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideBottom.Control = pbCabExport
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 619
|
||||
Width = 94
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 12
|
||||
Caption = 'Error message'
|
||||
ParentColor = False
|
||||
Visible = False
|
||||
end
|
||||
object lblPower: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 112
|
||||
Width = 47
|
||||
object lblCabPower: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = cmbCabPower
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 106
|
||||
Width = 44
|
||||
Caption = 'Power:'
|
||||
ParentColor = False
|
||||
end
|
||||
object cbPower: TComboBox
|
||||
AnchorSideLeft.Control = edtContestName
|
||||
AnchorSideTop.Control = lblPower
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 127
|
||||
Height = 25
|
||||
Top = 108
|
||||
object cmbCabPower: TComboBox
|
||||
AnchorSideLeft.Control = cmbCabContestName
|
||||
AnchorSideTop.Control = cmbCabContestName
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 123
|
||||
Height = 29
|
||||
Hint = 'Select category-power'
|
||||
Top = 99
|
||||
Width = 100
|
||||
ItemHeight = 17
|
||||
ItemHeight = 0
|
||||
Items.Strings = (
|
||||
'High'
|
||||
'Low'
|
||||
'QRP'
|
||||
)
|
||||
TabOrder = 6
|
||||
Style = csDropDownList
|
||||
TabOrder = 3
|
||||
end
|
||||
object lblContestRules: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 152
|
||||
Width = 98
|
||||
Caption = 'Contest Rules:'
|
||||
object lblCabLocation: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = edtCabLocation
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 137
|
||||
Width = 59
|
||||
Caption = 'Location:'
|
||||
ParentColor = False
|
||||
end
|
||||
object cbContestRules: TComboBox
|
||||
AnchorSideLeft.Control = cbPower
|
||||
AnchorSideTop.Control = lblContestRules
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 127
|
||||
Height = 25
|
||||
Top = 148
|
||||
Width = 283
|
||||
ItemHeight = 17
|
||||
Items.Strings = (
|
||||
'Westphalia-North Activity'
|
||||
'Westphalia-South Activity'
|
||||
)
|
||||
TabOrder = 7
|
||||
end
|
||||
object lblStats: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 200
|
||||
Width = 72
|
||||
object lblCabStats: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = gbCabQsoTail
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 509
|
||||
Width = 76
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Statistics:'
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lblStatsContent: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 224
|
||||
Width = 50
|
||||
Caption = 'Results'
|
||||
ParentColor = False
|
||||
object cmbCabContestName: TComboBox
|
||||
AnchorSideTop.Control = edtCabFileName
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = edtCabFileName
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 123
|
||||
Height = 33
|
||||
Hint = 'Select or type contest name'
|
||||
Top = 66
|
||||
Width = 304
|
||||
Anchors = [akTop, akRight]
|
||||
AutoComplete = True
|
||||
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
|
||||
CharCase = ecUppercase
|
||||
ItemHeight = 0
|
||||
OnChange = cmbCabContestNameChange
|
||||
OnExit = cmbCabContestNameExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 2
|
||||
end
|
||||
object lblStatsSum: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 288
|
||||
object btnCabHelp: TSpeedButton
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 485
|
||||
Height = 25
|
||||
Hint = 'Help'
|
||||
Top = 6
|
||||
Width = 25
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 6
|
||||
Glyph.Data = {
|
||||
F6030000424DF6030000000000003600000028000000100000000F0000000100
|
||||
200000000000C003000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF0095564AFB89463BFF8A4437FF8B4437FF8C4538FF8D4639FF8E4739FF8F48
|
||||
3AFF90493BFF914A3CFF924B3DFF985346F8FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00784641F5DBDCDCFFD4DCDCFFD4DCDCFFD4DCDCFFD3DCDCFFD3DCDCFFD3DC
|
||||
DCFFD3DCDCFFD3DCDCFFD6DCDCFFB0928B8BFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF0096574BF589463BFF8A4437FF8B4437FF8C4538FF8D4639FF8E4739FF8F48
|
||||
3AFF90493BFF914A3CFF924B3DFF9A5547F0FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00AF7467F5AD7568FFB0705EFFB27160FFB47462FFB36E5CFFB56F5DFFBB78
|
||||
66FFBD7B68FFBF7D6BFFC17F6BFFB87563F7FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B4776AF5AE7568FFB37362FFB57462FFB4705DFFDDBEB4FFE7D1CCFFBB79
|
||||
66FFBF7D69FFC17F6CFFC3816DFFBA7664F7FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00DAB2AAFAAF7668FFB97865FFBB7967FFB76F5AFFFDFAFAFFFFFFFFFFC485
|
||||
73FFC3826EFFC68470FFC88672FFBD7966E1FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00AD7062F5B87D70FFBE7D69FFC07E6BFFBF7A66FFDFBCB1FFD9B5ACFFC67F
|
||||
68FFCA8873FFCC8A75FFCE8C76FFBF7D69E2FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B17668F5BC8373FFC3826FFFC5836FFFC27A64FFFDFBFAFFFFFFFFFFC07B
|
||||
68FFCF8B73FFD18F79FFD3917BFFC37F6CE2FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B27769F5C08676FFCA8773FFC88470FFCA846EFFE7C7BCFFFFFFFFFFFBF8
|
||||
F7FFCF9888FFD69178FFD8967FFFC6846FE2FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B2796AF5C58A7BFFCC866FFFE0B8ABFFC8856FFFCF876FFFE3B7A8FFFEFB
|
||||
FAFFFFFFFFFFD19A89FFDE9A81FFCB8772E2FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B07465F5C88C7AFFDFAC9CFFFFFFFFFFF8F2F0FFD28970FFD6896DFFEBC2
|
||||
B6FFFFFFFFFFEED8D1FFE19B82FFCE8B76E2FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00DDB6AFFACB8E7BFFD58B73FFFBF4F1FFFFFFFFFFF9F5F3FFF9EAE5FFFFFF
|
||||
FFFFFFFFFFFFE8B8A4FFEAA48AFFCE8A74E7FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B27667F5D29784FFDE9B82FFDD9981FFEFCABBFFFBF1EEFFFBEFEBFFF9E9
|
||||
E3FFEDB6A2FFEAA589FFEFAC91FFCE8B75E7FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B67A6CF5D79B88FFE5A088FFE5A288FFE6A086FFE79F84FFE8A185FFEAA4
|
||||
88FFEEAA8EFFF0AE93FFF4B297FFCE8C76E7FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00E2A289A4D0927FD7D49078DAD39079DAD5927BDAD7947CDAD8947DDADB96
|
||||
7FDADB9880DADC9A81DAE19F86DBD4937CAEFFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = btnCabHelpClick
|
||||
end
|
||||
object gbCabInfoSent: TGroupBox
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = gbCabQsoHeader
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = btnCabBrowse
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 80
|
||||
Top = 266
|
||||
Width = 504
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'info sent'
|
||||
ClientHeight = 62
|
||||
ClientWidth = 502
|
||||
TabOrder = 7
|
||||
object chkCabInfoSrst: TCheckBox
|
||||
AnchorSideLeft.Control = gbCabInfoSent
|
||||
AnchorSideTop.Control = gbCabInfoSent
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 12
|
||||
Height = 23
|
||||
Hint = 'Include RST, normally YES'
|
||||
Top = 20
|
||||
Width = 78
|
||||
Caption = 'Total Sum: '
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
BorderSpacing.Left = 12
|
||||
Caption = 'inc. RST'
|
||||
Checked = True
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
State = cbChecked
|
||||
TabOrder = 0
|
||||
end
|
||||
object dlgSave: TSaveDialog
|
||||
object cmbCabInfoSEx1: TComboBox
|
||||
AnchorSideLeft.Control = chkCabInfoSrst
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = lblCabSEx1Cmb
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 96
|
||||
Height = 32
|
||||
Hint = 'Exhange1 selection'
|
||||
Top = 21
|
||||
Width = 100
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
ItemHeight = 0
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Style = csDropDownList
|
||||
TabOrder = 1
|
||||
end
|
||||
object edtCabInfoSEx1Wdt: TEdit
|
||||
AnchorSideLeft.Control = cmbCabInfoSEx1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbCabInfoSEx1
|
||||
Left = 202
|
||||
Height = 33
|
||||
Hint = 'Width of stx field '
|
||||
Top = 21
|
||||
Width = 38
|
||||
BorderSpacing.Left = 6
|
||||
MaxLength = 2
|
||||
NumbersOnly = True
|
||||
OnExit = edtCabInfoSEx1WdtExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 2
|
||||
Text = '6'
|
||||
end
|
||||
object cmbCabInfoSEx2: TComboBox
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbCabInfoSEx1
|
||||
AnchorSideRight.Control = edtCabInfoSEx2Wdt
|
||||
Left = 318
|
||||
Height = 29
|
||||
Hint = 'Exhange2 selection'
|
||||
Top = 21
|
||||
Width = 100
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
ItemHeight = 0
|
||||
Items.Strings = (
|
||||
''
|
||||
'1st'
|
||||
'2nd'
|
||||
)
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Style = csDropDownList
|
||||
TabOrder = 3
|
||||
end
|
||||
object edtCabInfoSEx2Wdt: TEdit
|
||||
AnchorSideTop.Control = cmbCabInfoSEx1
|
||||
AnchorSideRight.Control = gbCabInfoSent
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 424
|
||||
Height = 33
|
||||
Hint = 'Width of stx_string field '
|
||||
Top = 21
|
||||
Width = 38
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 40
|
||||
MaxLength = 2
|
||||
NumbersOnly = True
|
||||
OnExit = edtCabInfoSEx2WdtExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 4
|
||||
Text = '6'
|
||||
end
|
||||
object lblCabSEx1Cmb: TLabel
|
||||
AnchorSideLeft.Control = cmbCabInfoSEx1
|
||||
AnchorSideTop.Control = gbCabInfoSent
|
||||
Left = 96
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 143
|
||||
Caption = 'Exchange1 and width '
|
||||
ParentColor = False
|
||||
end
|
||||
object lblCabSEx2Cmb: TLabel
|
||||
AnchorSideLeft.Control = cmbCabInfoSEx2
|
||||
AnchorSideTop.Control = gbCabInfoSent
|
||||
Left = 318
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 143
|
||||
Caption = 'Exchange2 and width '
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
object gbCabInfoRcvd: TGroupBox
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = gbCabInfoSent
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = btnCabBrowse
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 80
|
||||
Top = 352
|
||||
Width = 504
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'info rcvd'
|
||||
ClientHeight = 62
|
||||
ClientWidth = 502
|
||||
TabOrder = 8
|
||||
object chkCabInfoRrst: TCheckBox
|
||||
AnchorSideLeft.Control = gbCabInfoRcvd
|
||||
AnchorSideTop.Control = gbCabInfoRcvd
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 12
|
||||
Height = 23
|
||||
Hint = 'Include RST, normally YES'
|
||||
Top = 20
|
||||
Width = 78
|
||||
BorderSpacing.Left = 12
|
||||
Caption = 'inc. RST'
|
||||
Checked = True
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
State = cbChecked
|
||||
TabOrder = 0
|
||||
end
|
||||
object cmbCabInfoREx1: TComboBox
|
||||
AnchorSideLeft.Control = chkCabInfoRrst
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = lblCabSrxCmb
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 96
|
||||
Height = 29
|
||||
Hint = 'Exhange1 selection'
|
||||
Top = 21
|
||||
Width = 100
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 6
|
||||
ItemHeight = 0
|
||||
Items.Strings = (
|
||||
''
|
||||
'1st'
|
||||
'2nd'
|
||||
)
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Style = csDropDownList
|
||||
TabOrder = 1
|
||||
end
|
||||
object edtCabInfoREx1Wdt: TEdit
|
||||
AnchorSideLeft.Control = cmbCabInfoREx1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbCabInfoREx1
|
||||
Left = 202
|
||||
Height = 33
|
||||
Hint = 'Width of stx field '
|
||||
Top = 21
|
||||
Width = 38
|
||||
BorderSpacing.Left = 6
|
||||
MaxLength = 2
|
||||
NumbersOnly = True
|
||||
OnExit = edtCabInfoREx1WdtExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 2
|
||||
Text = '6'
|
||||
end
|
||||
object cmbCabInfoREx2: TComboBox
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbCabInfoREx1
|
||||
AnchorSideRight.Control = edtCabInfoREx2Wdt
|
||||
Left = 318
|
||||
Height = 29
|
||||
Hint = 'Exhange2 selection'
|
||||
Top = 21
|
||||
Width = 100
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
ItemHeight = 0
|
||||
Items.Strings = (
|
||||
''
|
||||
'1st'
|
||||
'2nd'
|
||||
)
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Style = csDropDownList
|
||||
TabOrder = 3
|
||||
end
|
||||
object edtCabInfoREx2Wdt: TEdit
|
||||
AnchorSideTop.Control = cmbCabInfoREx1
|
||||
AnchorSideRight.Control = gbCabInfoRcvd
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 424
|
||||
Height = 33
|
||||
Hint = 'Width of stx_string field '
|
||||
Top = 21
|
||||
Width = 38
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 40
|
||||
MaxLength = 2
|
||||
NumbersOnly = True
|
||||
OnExit = edtCabInfoREx2WdtExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 4
|
||||
Text = '6'
|
||||
end
|
||||
object lblCabSrxCmb: TLabel
|
||||
AnchorSideLeft.Control = cmbCabInfoREx1
|
||||
AnchorSideTop.Control = gbCabInfoRcvd
|
||||
Left = 96
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 143
|
||||
Caption = 'Exchange1 and width '
|
||||
ParentColor = False
|
||||
end
|
||||
object lblCabSrxStCmb: TLabel
|
||||
AnchorSideLeft.Control = cmbCabInfoREx2
|
||||
AnchorSideTop.Control = gbCabInfoRcvd
|
||||
Left = 318
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 143
|
||||
Caption = 'Exchange2 and width '
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
object gbCabQsoHeader: TGroupBox
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = edtCabSoapBox
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = btnCabBrowse
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 60
|
||||
Top = 200
|
||||
Width = 504
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'QSO: common header'
|
||||
ClientHeight = 42
|
||||
ClientWidth = 502
|
||||
TabOrder = 6
|
||||
object lblCabQsoHeader: TLabel
|
||||
AnchorSideLeft.Control = gbCabQsoHeader
|
||||
AnchorSideTop.Control = edtCabCallWdt
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 9
|
||||
Width = 280
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'QSO: Frequ mo yyyy-mm-dd hhmm MyCall'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtCabCallWdt: TEdit
|
||||
AnchorSideTop.Control = gbCabQsoHeader
|
||||
AnchorSideRight.Control = gbCabQsoHeader
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 458
|
||||
Height = 33
|
||||
Hint = 'Width of sent and rcvd callsign field'
|
||||
Top = 0
|
||||
Width = 38
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
MaxLength = 2
|
||||
NumbersOnly = True
|
||||
OnExit = edtCabCallWdtExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
Text = '13'
|
||||
end
|
||||
object lblCabQsoHeader1: TLabel
|
||||
AnchorSideTop.Control = edtCabCallWdt
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = edtCabCallWdt
|
||||
Left = 373
|
||||
Height = 15
|
||||
Top = 9
|
||||
Width = 82
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Right = 3
|
||||
Caption = 'Call(s) width'
|
||||
ParentColor = False
|
||||
ParentShowHint = False
|
||||
end
|
||||
end
|
||||
object gbCabQsoTail: TGroupBox
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = gbCabInfoRcvd
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 65
|
||||
Top = 438
|
||||
Width = 194
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'QSO: tail'
|
||||
ClientHeight = 47
|
||||
ClientWidth = 192
|
||||
TabOrder = 9
|
||||
object lblCabQsoTail: TLabel
|
||||
AnchorSideTop.Control = gbCabQsoTail
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = cmbCabTailTxCount
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 16
|
||||
Width = 54
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'TxCount'
|
||||
ParentColor = False
|
||||
end
|
||||
object cmbCabTailTxCount: TComboBox
|
||||
AnchorSideTop.Control = gbCabQsoTail
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = gbCabQsoTail
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 80
|
||||
Height = 29
|
||||
Hint = 'Tx count (empty,0,1,2)'
|
||||
Top = 9
|
||||
Width = 100
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 12
|
||||
ItemHeight = 0
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
''
|
||||
'0'
|
||||
'1'
|
||||
'2'
|
||||
)
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
Style = csDropDownList
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object edtCabLocation: TEdit
|
||||
AnchorSideLeft.Control = cmbCabPower
|
||||
AnchorSideTop.Control = cmbCabPower
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = cmbCabContestName
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 123
|
||||
Height = 33
|
||||
Top = 128
|
||||
Width = 304
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
TabOrder = 4
|
||||
end
|
||||
object lblCabSoapBox: TLabel
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = edtCabSoapBox
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 170
|
||||
Width = 61
|
||||
Caption = 'SoapBox:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtCabSoapBox: TEdit
|
||||
AnchorSideLeft.Control = cmbCabPower
|
||||
AnchorSideTop.Control = edtCabLocation
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = cmbCabContestName
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 123
|
||||
Height = 33
|
||||
Top = 161
|
||||
Width = 304
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
TabOrder = 5
|
||||
end
|
||||
object gbCabLayout: TGroupBox
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = gbCabQsoTail
|
||||
AnchorSideRight.Control = btnCabBrowse
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 336
|
||||
Height = 65
|
||||
Hint = 'Save(/Load) all settings to file'
|
||||
Top = 438
|
||||
Width = 174
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'QSO: layout settings'
|
||||
ClientHeight = 47
|
||||
ClientWidth = 172
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 11
|
||||
object btCabSave: TButton
|
||||
AnchorSideLeft.Control = gbCabLayout
|
||||
AnchorSideTop.Control = gbCabLayout
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 11
|
||||
Width = 70
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Save'
|
||||
OnClick = btCabSaveClick
|
||||
TabOrder = 0
|
||||
end
|
||||
object btCabLoad: TButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = gbCabLayout
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = gbCabLayout
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 96
|
||||
Height = 25
|
||||
Top = 11
|
||||
Width = 70
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Load'
|
||||
OnClick = btCabLoadClick
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object gbCabCoCount: TGroupBox
|
||||
AnchorSideLeft.Control = gbCabQsoTail
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = gbCabQsoTail
|
||||
AnchorSideRight.Control = gbCabLayout
|
||||
Left = 206
|
||||
Height = 65
|
||||
Top = 438
|
||||
Width = 124
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Count pfx'
|
||||
ClientHeight = 47
|
||||
ClientWidth = 122
|
||||
ParentShowHint = False
|
||||
TabOrder = 10
|
||||
object edtCabCountC: TEdit
|
||||
AnchorSideLeft.Control = gbCabCoCount
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = gbCabCoCount
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 26
|
||||
Height = 33
|
||||
Hint = 'Type prefix for qsos to count'
|
||||
Top = 7
|
||||
Width = 70
|
||||
CharCase = ecUppercase
|
||||
OnExit = edtCabCountCExit
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object mCabStatistics: TMemo
|
||||
AnchorSideLeft.Control = lblCabfileName
|
||||
AnchorSideTop.Control = lblCabStats
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = btnCabBrowse
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = lblCabError
|
||||
Left = 6
|
||||
Height = 83
|
||||
Top = 530
|
||||
Width = 504
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
ReadOnly = True
|
||||
ScrollBars = ssAutoBoth
|
||||
TabOrder = 15
|
||||
Visible = False
|
||||
end
|
||||
object btnCabFrmFlt: TButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbCabContestName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 435
|
||||
Height = 25
|
||||
Top = 70
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'Frm Flt'
|
||||
OnClick = btnCabFrmFltClick
|
||||
TabOrder = 16
|
||||
end
|
||||
object dlgCabSave: TSaveDialog
|
||||
Title = 'Save with file name'
|
||||
DefaultExt = '.cbr'
|
||||
Filter = 'Cabrillo file|*.cbr'
|
||||
left = 477
|
||||
top = 236
|
||||
left = 448
|
||||
top = 112
|
||||
end
|
||||
object dlgCabOpen: TOpenDialog
|
||||
Title = 'Open file'
|
||||
DefaultExt = '.templ'
|
||||
Filter = 'Cabrillo template|*.templ'
|
||||
left = 448
|
||||
top = 160
|
||||
end
|
||||
end
|
||||
|
@ -1,3 +1,22 @@
|
||||
{*
|
||||
todo:
|
||||
|
||||
DONE -Contest name: Use same predefined list as is used in contest form's contest name
|
||||
DONE -QSO print: let user design format mask (often published with contest rules)
|
||||
DONE REMOVED -Points counting: consider giving up that. Claimed score is not needed (only nice to know)
|
||||
DONE -Add warning: If preferences/station/contest info is not filled
|
||||
DONE - use form font size routines at formcreate (or show)
|
||||
DONE - save/load export settings
|
||||
DONE - write /tmp/CabReject.log for rejected qsos
|
||||
DONE- clear unused code and debugs
|
||||
- status counts to help manual score counting:
|
||||
+ worked countries
|
||||
+ worked qsos by continents,
|
||||
+ count of different entries in excange1 & exhange2 (if entry is loc count by 4 char)
|
||||
ADDED SETTING + count for user defined country (perhaps)
|
||||
- help button works, but help itself needs now refreshing up to date
|
||||
- test test test
|
||||
*}
|
||||
unit fCabrilloExport;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@ -6,50 +25,105 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, ComCtrls, LCLType, LazFileUtils;
|
||||
StdCtrls, ComCtrls, LCLType, Buttons, LazFileUtils, StrUtils, inifiles;
|
||||
|
||||
|
||||
const
|
||||
cMaxExch = 32; //cExhanges array Max size
|
||||
cExhanges: array[0..32] of string[11] =
|
||||
('',
|
||||
'stx', 'srx', 'stx_string', 'srx_string', 'itu', 'waz', 'loc', 'my_loc', 'iota', 'state',
|
||||
'dok', 'county', 'name', 'my_name','qth', 'remarks', 'cont', 'pwr', 'freq', 'band',
|
||||
'mode', 'prop_mode', 'satellite', 'qsodate', 'time_on', 'time_off', 'award', 'qso_dxcc', 'profile', 'idcall',
|
||||
'rxfreq', 'contestname');
|
||||
|
||||
type
|
||||
|
||||
{ TfrmCabrilloExport }
|
||||
|
||||
TfrmCabrilloExport = class(TForm)
|
||||
btnClose: TButton;
|
||||
btnExport: TButton;
|
||||
Button1: TButton;
|
||||
cbPower: TComboBox;
|
||||
cbContestRules: TComboBox;
|
||||
dlgSave: TSaveDialog;
|
||||
edtContestName: TEdit;
|
||||
edtFileName: TEdit;
|
||||
Label1: TLabel;
|
||||
lblStatsSum: TLabel;
|
||||
lblStatsContent: TLabel;
|
||||
lblStats: TLabel;
|
||||
lblContestRules: TLabel;
|
||||
lblPower: TLabel;
|
||||
lblError: TLabel;
|
||||
lblContestName: TLabel;
|
||||
lblDone: TLabel;
|
||||
pbExport: TProgressBar;
|
||||
multipliers: TStringList;
|
||||
procedure btnExportClick(Sender: TObject);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
btnCabFrmFlt: TButton;
|
||||
btnCabClose: TButton;
|
||||
btnCabExport: TButton;
|
||||
btnCabHelp: TSpeedButton;
|
||||
btnCabBrowse: TButton;
|
||||
btCabSave: TButton;
|
||||
btCabLoad: TButton;
|
||||
chkCabInfoSrst: TCheckBox;
|
||||
chkCabInfoRrst: TCheckBox;
|
||||
cmbCabInfoREx1: TComboBox;
|
||||
cmbCabInfoREx2: TComboBox;
|
||||
cmbCabPower: TComboBox;
|
||||
cmbCabContestName: TComboBox;
|
||||
cmbCabInfoSEx1: TComboBox;
|
||||
cmbCabInfoSEx2: TComboBox;
|
||||
cmbCabTailTxCount: TComboBox;
|
||||
dlgCabSave: TSaveDialog;
|
||||
edtCabCountC: TEdit;
|
||||
edtCabCallWdt: TEdit;
|
||||
edtCabLocation: TEdit;
|
||||
edtCabInfoREx2Wdt: TEdit;
|
||||
edtCabInfoSEx1Wdt: TEdit;
|
||||
edtCabInfoSEx2Wdt: TEdit;
|
||||
edtCabFileName: TEdit;
|
||||
edtCabInfoREx1Wdt: TEdit;
|
||||
edtCabSoapBox: TEdit;
|
||||
gbCabInfoRcvd: TGroupBox;
|
||||
gbCabInfoSent: TGroupBox;
|
||||
gbCabQsoHeader: TGroupBox;
|
||||
gbCabQsoTail: TGroupBox;
|
||||
gbCabLayout: TGroupBox;
|
||||
gbCabCoCount: TGroupBox;
|
||||
lblCabQsoHeader1: TLabel;
|
||||
lblCabSoapBox: TLabel;
|
||||
lblCabQsoHeader: TLabel;
|
||||
lblCabQsoTail: TLabel;
|
||||
lblCabSEx1Cmb: TLabel;
|
||||
lblCabSrxCmb: TLabel;
|
||||
lblCabSEx2Cmb: TLabel;
|
||||
lblCabfileName: TLabel;
|
||||
lblCabStats: TLabel;
|
||||
lblCabLocation: TLabel;
|
||||
lblCabPower: TLabel;
|
||||
lblCabError: TLabel;
|
||||
lblCabContestName: TLabel;
|
||||
lblCabDone: TLabel;
|
||||
lblCabSrxStCmb: TLabel;
|
||||
dlgCabOpen: TOpenDialog;
|
||||
mCabStatistics: TMemo;
|
||||
pbCabExport: TProgressBar;
|
||||
procedure btCabLoadClick(Sender: TObject);
|
||||
procedure btCabSaveClick(Sender: TObject);
|
||||
procedure btnCabExportClick(Sender: TObject);
|
||||
procedure btnCabBrowseClick(Sender: TObject);
|
||||
procedure btnCabFrmFltClick(Sender: TObject);
|
||||
procedure btnCabHelpClick(Sender: TObject);
|
||||
procedure cmbCabContestNameChange(Sender: TObject);
|
||||
procedure cmbCabContestNameExit(Sender: TObject);
|
||||
procedure edtCabCallWdtExit(Sender: TObject);
|
||||
procedure edtCabInfoREx2WdtExit(Sender: TObject);
|
||||
procedure edtCabInfoREx1WdtExit(Sender: TObject);
|
||||
procedure edtCabInfoSEx2WdtExit(Sender: TObject);
|
||||
procedure edtCabInfoSEx1WdtExit(Sender: TObject);
|
||||
procedure edtCabCountCExit(Sender: TObject);
|
||||
procedure FormClose(Sender : TObject; var CloseAction : TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender : TObject);
|
||||
private
|
||||
procedure SaveSettings;
|
||||
procedure CabrilloMultipliersListCreate(contesttype: Integer);
|
||||
|
||||
function NonZero(s:String):String;
|
||||
function CabrilloMode(mode : String) : String;
|
||||
function CabrilloBand(band : String) : String;
|
||||
function CabrilloBandToFreq(band : String) : String;
|
||||
function CabrilloPower(power: integer): String;
|
||||
function CabrilloQSOPoints(mode: String): Integer;
|
||||
procedure saveCabLay(filename:string);
|
||||
procedure loadCabLay(filename:string);
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
frmCabrilloExport : TfrmCabrilloExport;
|
||||
CountryToCount : integer = 0;
|
||||
|
||||
implementation
|
||||
{$R *.lfm}
|
||||
@ -61,25 +135,65 @@ uses dData,dUtils,dDXCC,fWorkedGrids, uMyIni;
|
||||
procedure TfrmCabrilloExport.FormShow(Sender : TObject);
|
||||
begin
|
||||
dmUtils.LoadWindowPos(self);
|
||||
lblError.Visible := False;
|
||||
edtFileName.Text := cqrini.ReadString('CabrilloExport','FileName','');
|
||||
if edtFileName.Text='' then
|
||||
dlgSave.InitialDir := dmData.UsrHomeDir
|
||||
lblCabError.Visible := False;
|
||||
edtCabFileName.Text := cqrini.ReadString('CabrilloExport','FileName','');
|
||||
if edtCabFileName.Text='' then
|
||||
dlgCabSave.InitialDir := dmData.UsrHomeDir
|
||||
else
|
||||
dlgSave.InitialDir := ExtractFilePath(edtFileName.Text);
|
||||
edtContestName.Text := cqrini.ReadString('CabrilloExport','ContestName','');
|
||||
cbPower.ItemIndex := 0;
|
||||
lblStats.Visible := False;
|
||||
lblStatsContent.Visible := False;
|
||||
lblStatsSum.Visible := False;
|
||||
multipliers := TStringList.Create;
|
||||
dlgCabSave.InitialDir := ExtractFilePath(edtCabFileName.Text);
|
||||
cmbCabContestName.Text := cqrini.ReadString('CabrilloExport','ContestName','');
|
||||
|
||||
cmbCabPower.ItemIndex:= cqrini.ReadInteger('CabrilloExport','Power',0);
|
||||
edtCabLocation.Text:= cqrini.ReadString('CabrilloExport','Location','');
|
||||
edtCabSoapBox.Text:= cqrini.ReadString('CabrilloExport','SoapBox','');
|
||||
edtCabCallWdt.Text:= cqrini.ReadString('CabrilloExport','CallsWidth', '13');
|
||||
|
||||
chkCabInfoSrst.Checked:= cqrini.ReadBool('CabrilloExport','incRSTs',True);
|
||||
cmbCabInfoSEx1.ItemIndex:= cqrini.ReadInteger('CabrilloExport','StxOrder',0);
|
||||
edtCabInfoSEx1Wdt.Text:= cqrini.ReadString('CabrilloExport','StxWidth','6');
|
||||
cmbCabInfoSEx2.ItemIndex := cqrini.ReadInteger('CabrilloExport','StxStringOrder',0);
|
||||
edtCabInfoSEx2Wdt.Text := cqrini.ReadString('CabrilloExport','StxStringWidth', '6');
|
||||
|
||||
chkCabInfoRrst.Checked:= cqrini.ReadBool('CabrilloExport','incRSTr',True);
|
||||
cmbCabInfoREx1.ItemIndex:= cqrini.ReadInteger('CabrilloExport','SrxOrder',0);
|
||||
edtCabInfoREx1Wdt.Text:= cqrini.ReadString('CabrilloExport','SrxWidth','6');
|
||||
cmbCabInfoREx2.ItemIndex := cqrini.ReadInteger('CabrilloExport','SrxStringOrder',0);
|
||||
edtCabInfoREx2Wdt.Text := cqrini.ReadString('CabrilloExport','SrxStringWidth', '6');
|
||||
cmbCabTailTxCount.ItemIndex := cqrini.ReadInteger('CabrilloExport','TxCount',0);
|
||||
|
||||
CountryToCount:= cqrini.ReadInteger('CabrilloExport','CountryToCount',0);
|
||||
if ( CountryToCount > 0) then edtCabCountC.Text:= dmDXCC.PfxFromADIF(CountryToCount);
|
||||
|
||||
lblCabStats.Visible := False;
|
||||
mCabStatistics.Visible:=False;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.SaveSettings;
|
||||
begin
|
||||
cqrini.WriteString('CabrilloExport','FileName',edtFileName.Text);
|
||||
cqrini.WriteString('CabrilloExport','ContestName',edtContestName.Text);
|
||||
cqrini.WriteString('CabrilloExport','FileName',edtCabFileName.Text);
|
||||
cqrini.WriteString('CabrilloExport','ContestName',cmbCabContestName.Text);
|
||||
cqrini.WriteInteger('CabrilloExport','Power',cmbCabPower.ItemIndex);
|
||||
cqrini.WriteString('CabrilloExport','Location',edtCabLocation.Text);
|
||||
cqrini.WriteString('CabrilloExport','SoapBox',edtCabSoapBox.Text);
|
||||
cqrini.WriteString('CabrilloExport','CallsWidth', edtCabCallWdt.Text);
|
||||
|
||||
cqrini.WriteBool('CabrilloExport','incRSTs',chkCabInfoSrst.Checked);
|
||||
cqrini.WriteInteger('CabrilloExport','StxOrder',cmbCabInfoSEx1.ItemIndex);
|
||||
cqrini.WriteString('CabrilloExport','StxWidth', edtCabInfoSEx1Wdt.Text);
|
||||
cqrini.WriteInteger('CabrilloExport','StxStringOrder',cmbCabInfoSEx2.ItemIndex);
|
||||
cqrini.WriteString('CabrilloExport','StxStringWidth', edtCabInfoSEx2Wdt.Text);
|
||||
|
||||
cqrini.WriteBool('CabrilloExport','incRSTr',chkCabInfoRrst.Checked);
|
||||
cqrini.WriteInteger('CabrilloExport','SrxOrder',cmbCabInfoREx1.ItemIndex);
|
||||
cqrini.WriteString('CabrilloExport','SrxWidth', edtCabInfoREx1Wdt.Text);
|
||||
cqrini.WriteInteger('CabrilloExport','SrxStringOrder',cmbCabInfoREx2.ItemIndex);
|
||||
cqrini.WriteString('CabrilloExport','SrxStringWidth', edtCabInfoREx2Wdt.Text);
|
||||
|
||||
cqrini.WriteInteger('CabrilloExport','TxCount',cmbCabTailTxCount.ItemIndex);
|
||||
cqrini.WriteInteger('CabrilloExport','CountryToCount',CountryToCount);
|
||||
|
||||
lblCabStats.Visible := False;
|
||||
mCabStatistics.Visible:=False;
|
||||
end;
|
||||
|
||||
function TfrmCabrilloExport.CabrilloMode(mode: string): String;
|
||||
@ -91,14 +205,20 @@ begin
|
||||
'AM': Result := 'PH';
|
||||
'FM': Result := 'PH';
|
||||
'RTTY': Result := 'RY';
|
||||
'SSTV': Result := 'DG';
|
||||
end; //case
|
||||
else //remaining modes are digital (mostly)
|
||||
Result := 'DG';
|
||||
end;
|
||||
end;
|
||||
|
||||
function TfrmCabrilloExport.CabrilloBand(band: string): String;
|
||||
function TfrmCabrilloExport.CabrilloBandToFreq(band: string): String;
|
||||
begin
|
||||
Result := '';
|
||||
case band of
|
||||
'160M': Result := '1800';
|
||||
'80M': Result := '3500';
|
||||
'40M': Result := '7000';
|
||||
'20M': Result := '14000';
|
||||
'15M': Result := '21000';
|
||||
'10M': Result := '28000';
|
||||
'6M': Result := '50';
|
||||
'4M': Result := '70';
|
||||
'2M': Result := '144';
|
||||
@ -109,6 +229,10 @@ begin
|
||||
'6CM': Result := '5.7G';
|
||||
'3CM': Result := '10G';
|
||||
'1.25CM': Result := '24G';
|
||||
'6MM': Result := '47G';
|
||||
'4MM': Result := '75G';
|
||||
else
|
||||
Result := '';
|
||||
end; //case
|
||||
end;
|
||||
|
||||
@ -122,34 +246,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TfrmCabrilloExport.CabrilloQSOPoints(mode: String): Integer;
|
||||
begin
|
||||
Result := 0;
|
||||
// Westphalia North and South Activities count QSO points based on mode
|
||||
if (cbContestRules.ItemIndex = 0) or (cbContestRules.ItemIndex = 1) then
|
||||
begin
|
||||
case mode of
|
||||
'FM': Result := 2;
|
||||
'SSB': Result := 4;
|
||||
'CW': Result := 6;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.CabrilloMultipliersListCreate(contesttype: Integer);
|
||||
begin
|
||||
case contesttype of
|
||||
0: begin
|
||||
multipliers.Delimiter := ';';
|
||||
multipliers.DelimitedText := 'N01;N02;N03;N04;N05;N06;N07;N08;N09;N10;N11;N12;N13;N14;N15;N16;N17;N18;N19;N20;N21;N22;N23;N24;N25;N26;N28;N29;N30;N31;N32;N33;N34;N35;N36;N37;N38;N39;N40;N41;N42;N43;N44;N45;N46;N47;N48;N49;N50;N51;N52;N53;N54;N55;N56;N57;N58;N59;N60;N61;N62;WN;DVN;YLN;Z14;Z34;Z41;Z60';
|
||||
end;
|
||||
1: begin
|
||||
multipliers.Delimiter := ';';
|
||||
multipliers.DelimitedText := 'O01;O02;O03;O04;O05;O06;O07;O08;O09;O10;O11;O12;O13;O14;O15;O16;O17;O18;O19;O20;O21;O22;O23;O24;O25;O26;O27;O28;O29;O30;O31;O32;O33;O34;O35;O36;O37;O38;O39;O40;O41;O42;O43;O44;O45;O46;O47;O48;O49;O51;O52;O53;O54;O55;DVO;DWS;YLO;Z03;Z38;Z92;Z93';
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.FormClose(Sender : TObject;
|
||||
var CloseAction : TCloseAction);
|
||||
begin
|
||||
@ -157,18 +253,154 @@ begin
|
||||
dmUtils.SaveWindowPos(self)
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.Button1Click(Sender : TObject);
|
||||
procedure TfrmCabrilloExport.FormCreate(Sender: TObject);
|
||||
var i:integer;
|
||||
begin
|
||||
if dlgSave.Execute then
|
||||
edtFileName.Text := dlgSave.FileName
|
||||
dmUtils.LoadWindowPos(self);
|
||||
dmUtils.LoadFontSettings(self);
|
||||
dmUtils.InsertContests(cmbCabContestName);
|
||||
cmbCabInfoSEx1.Items.Clear;
|
||||
cmbCabInfoSEx2.Items.Clear;
|
||||
cmbCabInfoREx1.Items.Clear;
|
||||
cmbCabInfoREx2.Items.Clear;
|
||||
for i:=0 to cMaxExch do //cExhanges array Max size
|
||||
Begin
|
||||
cmbCabInfoSEx1.Items.Add(cExhanges[i]);
|
||||
cmbCabInfoSEx2.Items.Add(cExhanges[i]);
|
||||
cmbCabInfoREx1.Items.Add(cExhanges[i]);
|
||||
cmbCabInfoREx2.Items.Add(cExhanges[i]);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btnExportClick(Sender: TObject);
|
||||
procedure TfrmCabrilloExport.btnCabBrowseClick(Sender : TObject);
|
||||
begin
|
||||
if dlgCabSave.Execute then
|
||||
edtCabFileName.Text := dlgCabSave.FileName
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btnCabFrmFltClick(Sender: TObject);
|
||||
begin
|
||||
if not dmData.IsFilter then
|
||||
begin
|
||||
Application.MessageBox('You must first use Contest Filter for qsos to export!','Error ...',mb_OK+mb_IconError);
|
||||
exit
|
||||
end;
|
||||
cmbCabContestName.Text:='';
|
||||
dmData.qCQRLOG.First;
|
||||
while not dmData.qCQRLOG.eof do
|
||||
begin
|
||||
if (cmbCabContestName.Text='') then //set contest name from filtered qosos
|
||||
Begin
|
||||
if (dmData.qCQRLOG.FieldByName('contestname').AsString <> '') then
|
||||
cmbCabContestName.Text:=dmData.qCQRLOG.FieldByName('contestname').AsString;
|
||||
end
|
||||
else
|
||||
Begin //if there are different contest names in filtered qsos put "?" instead
|
||||
if ((cmbCabContestName.Text<>dmData.qCQRLOG.FieldByName('contestname').AsString)
|
||||
and (dmData.qCQRLOG.FieldByName('contestname').AsString <> '')) then
|
||||
cmbCabContestName.Text:='eh? Check filter results!';
|
||||
end;
|
||||
dmData.qCQRLOG.Next;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btnCabHelpClick(Sender: TObject);
|
||||
begin
|
||||
ShowHelp;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.cmbCabContestNameChange(Sender: TObject);
|
||||
var i: integer;
|
||||
s: string;
|
||||
begin
|
||||
if cmbCabContestName.Text<>'' then
|
||||
begin
|
||||
if pos('|', cmbCabContestName.Text)>1 then //list selected item
|
||||
cmbCabContestName.Text := ExtractWord(1,cmbCabContestName.Text,['|']);
|
||||
s:= '';
|
||||
for i:=1 to length(cmbCabContestName.Text) do
|
||||
begin
|
||||
case cmbCabContestName.Text[i] of
|
||||
'A'..'Z' : s:=s+ cmbCabContestName.Text[i];
|
||||
'0'..'9' : s:=s+ cmbCabContestName.Text[i];
|
||||
'-' : s:=s+ cmbCabContestName.Text[i];
|
||||
end;
|
||||
end;
|
||||
cmbCabContestName.Text:=s;
|
||||
cmbCabContestName.SelStart := Length(cmbCabContestName.Text);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.cmbCabContestNameExit(Sender: TObject);
|
||||
begin
|
||||
if pos('|', cmbCabContestName.Text)>1 then //list selected item
|
||||
cmbCabContestName.Text := ExtractWord(1,cmbCabContestName.Text,['|']);
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.edtCabCallWdtExit(Sender: TObject);
|
||||
begin
|
||||
edtCabCallWdt.Text:=NonZero(edtCabCallWdt.Text);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfrmCabrilloExport.edtCabInfoSEx1WdtExit(Sender: TObject);
|
||||
begin
|
||||
edtCabInfoSEx1Wdt.Text :=NonZero( edtCabInfoSEx1Wdt.Text);
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.edtCabCountCExit(Sender: TObject);
|
||||
var
|
||||
AllQSO : Boolean=False;
|
||||
f : TextFile;
|
||||
q : String;
|
||||
mycall : String;
|
||||
adif : Word;
|
||||
date : TDateTime;
|
||||
cont, WAZ, posun, ITU, lat, long, pfx, country: string;
|
||||
Begin
|
||||
date := dmUtils.GetDateTime(0);
|
||||
if dmDXCC.IsPrefix(edtCabCountC.Text,Date) then
|
||||
Begin
|
||||
cont := '';WAZ := '';posun := '';ITU := '';lat := '';long := '';
|
||||
adif:=dmDXCC.id_country(edtCabCountC.Text,date,pfx,country,cont,itu,waz,posun,lat,long);
|
||||
edtCabCountC.Text:= dmDXCC.PfxFromADIF(adif);
|
||||
CountryToCount:= adif;
|
||||
end
|
||||
else
|
||||
begin
|
||||
edtCabCountC.Text:='';
|
||||
CountryToCount:= 0;
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.edtCabInfoSEx2WdtExit(Sender: TObject);
|
||||
begin
|
||||
edtCabInfoSEx2Wdt.Text:=NonZero(edtCabInfoSEx2Wdt.Text);
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.edtCabInfoREx1WdtExit(Sender: TObject);
|
||||
begin
|
||||
edtCabInfoREx1Wdt.Text:=NonZero(edtCabInfoREx1Wdt.Text);
|
||||
end;
|
||||
procedure TfrmCabrilloExport.edtCabInfoREx2WdtExit(Sender: TObject);
|
||||
begin
|
||||
edtCabInfoREx2Wdt.Text:=NonZero(edtCabInfoREx2Wdt.Text);
|
||||
end;
|
||||
|
||||
function TfrmCabrilloExport.NonZero(s:String):String;
|
||||
var i:integer;
|
||||
begin
|
||||
TryStrToInt(s,i);
|
||||
if (i=0) then s:='1';
|
||||
Result:=s;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btnCabExportClick(Sender: TObject);
|
||||
type
|
||||
EachContinent=Record
|
||||
Name, WkdPfxs: String;
|
||||
QsoCount: Integer;
|
||||
end;
|
||||
var
|
||||
f,r : TextFile;
|
||||
tmp : String;
|
||||
mycall,call: String;
|
||||
myloc, loc : String;
|
||||
myname : String;
|
||||
mailingaddress, zipcity : String;
|
||||
@ -179,30 +411,33 @@ var
|
||||
j : Integer = 0;
|
||||
s : TStringList;
|
||||
Date : TDateTime;
|
||||
callsign_list : TStringList;
|
||||
dupe : String;
|
||||
cont, WAZ, posun, ITU, lat, long, pfx, country: string;
|
||||
message : String;
|
||||
category_band: String;
|
||||
category_mode: String;
|
||||
address: TStringArray;
|
||||
qsopoints : Integer = 0;
|
||||
multiplierpoints : Integer = 0;
|
||||
worked_multipliers : TStringList;
|
||||
|
||||
UsrCountryCount : integer = 0;
|
||||
TotalCountryList : TStringList;
|
||||
|
||||
Continents: array[ 0 .. 6 ] of EachContinent = (
|
||||
(name: 'NA'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'SA'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'OC'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'AS'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'EU'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'AF'; WkdPfxs: ''; QsoCount: 0),
|
||||
(name: 'Locator'; WkdPfxs: ''; QsoCount: 0) //nice place for this :-)
|
||||
);
|
||||
|
||||
|
||||
begin
|
||||
SaveSettings;
|
||||
date := dmUtils.GetDateTime(0);
|
||||
mycall := cqrini.ReadString('Station','Call','');
|
||||
cont := '';WAZ := '';posun := '';ITU := '';lat := '';long := '';
|
||||
adif := dmDXCC.id_country(mycall,date,pfx,country,cont,itu,waz,posun,lat,long);
|
||||
dmDXCC.qDXCCRef.Close;
|
||||
dmDXCC.qDXCCRef.SQL.Text := 'SELECT * FROM cqrlog_common.dxcc_ref WHERE adif = ' + IntToStr(adif);
|
||||
dmDXCC.qDXCCRef.Open;
|
||||
if dmDXCC.qDXCCRef.RecordCount > 0 then
|
||||
begin
|
||||
country := dmDXCC.qDXCCRef.FieldByName('name').AsString;
|
||||
end;
|
||||
adif := dmDXCC.id_country(mycall,date,pfx,cont,country,itu,waz,posun,lat,long);
|
||||
myloc := cqrini.ReadString('Station','LOC','');
|
||||
if length(myloc) = 4 then myloc := myloc +'LL';
|
||||
if length(myloc) = 4 then myloc := myloc +'ll';
|
||||
myname := cqrini.ReadString('Station','Name','');
|
||||
mailingaddress := cqrini.ReadString('Station','MailingAddress','');
|
||||
zipcity := cqrini.ReadString('Station','ZipCity','');
|
||||
@ -210,103 +445,185 @@ begin
|
||||
email := cqrini.ReadString('Station','Email','');
|
||||
club := cqrini.ReadString('Station','Club','');
|
||||
|
||||
CabrilloMultipliersListCreate(cbContestRules.ItemIndex);
|
||||
worked_multipliers := TStringList.Create;
|
||||
|
||||
if (( mailingaddress ='') or (zipcity='') or (email='')) then
|
||||
begin
|
||||
Application.MessageBox('You should fill Preferences/Station/Contest info.'+LineEnding+
|
||||
'MailAddr,Zip and eMail should have content!'+LineEnding+
|
||||
'(at least "-")','Error ...',mb_OK+mb_IconError);
|
||||
exit
|
||||
end;
|
||||
if not dmData.IsFilter then
|
||||
begin
|
||||
Application.MessageBox('You must filter a single band to export!','Error ...',mb_OK+mb_IconError);
|
||||
Application.MessageBox('You must first use filter for qsos to export!','Error ...',mb_OK+mb_IconError);
|
||||
exit
|
||||
end;
|
||||
if (dmData.qCQRLOG.FieldByName('band').AsString = '') then
|
||||
begin
|
||||
Application.MessageBox('You must filter a single band to export!','Error ...',mb_OK+mb_IconError);
|
||||
exit
|
||||
end;
|
||||
if FileExistsUTF8(edtFileName.Text) then
|
||||
|
||||
if FileExistsUTF8(edtCabFileName.Text) then
|
||||
begin
|
||||
if Application.MessageBox('File already exists,overwrite it?','Question ...',mb_YesNo
|
||||
+mb_IconQuestion)=mrYes then
|
||||
DeleteFileUTF8(edtFileName.Text)
|
||||
DeleteFileUTF8(edtCabFileName.Text)
|
||||
else
|
||||
exit
|
||||
end;
|
||||
if (trim(edtFileName.Text)='') then
|
||||
if (trim(edtCabFileName.Text)='') then
|
||||
begin
|
||||
Application.MessageBox('You must choose file to export!','Error ...',mb_OK+mb_IconError);
|
||||
exit
|
||||
end;
|
||||
pbExport.Position := 0;
|
||||
lblDone.Visible := False;
|
||||
pbExport.Visible := True;
|
||||
if dmData.trQ.Active then dmData.trQ.Rollback;
|
||||
dmData.Q.Close;
|
||||
if AllQSO then
|
||||
dmData.Q.SQL.Text := 'select qsodate,time_on,callsign,freq,mode,award,qth,remarks '+
|
||||
'from view_cqrlog_main_by_qsodate order by qsodate,time_on'
|
||||
else begin
|
||||
q := dmData.qCQRLOG.SQL.Text;
|
||||
if Pos('order by',LowerCase(q)) > 0 then
|
||||
q := copy(q,1,Pos('order by',LowerCase(q))-1);
|
||||
q := q + ' order by qsodate,time_on';
|
||||
dmData.Q.SQL.Text := q;
|
||||
end;
|
||||
if dmData.DebugLevel >=1 then
|
||||
Writeln(dmData.Q.SQL.Text);
|
||||
pbCabExport.Position := 0;
|
||||
lblCabDone.Visible := False;
|
||||
pbCabExport.Visible := True;
|
||||
|
||||
TotalCountryList := TStringList.Create;
|
||||
TotalCountryList.Sorted:=True;
|
||||
TotalCountryList.Duplicates:=dupIgnore;
|
||||
s := TStringList.Create;
|
||||
callsign_list := TStringList.Create;
|
||||
category_band := 'ALL';
|
||||
category_band := '';
|
||||
category_mode := '';
|
||||
try try
|
||||
dmData.trQ.StartTransaction;
|
||||
dmData.Q.Open;
|
||||
pbExport.Max := dmData.Q.RecordCount;
|
||||
while not dmData.Q.Eof do
|
||||
AssignFile(r,'/tmp/CabrilloReject.log');
|
||||
Rewrite(r);
|
||||
pbCabExport.Max := dmData.qCQRLOG.RecordCount;
|
||||
dmData.qCQRLOG.Last;
|
||||
while not dmData.qCQRLOG.bof do
|
||||
begin
|
||||
tmp:='';
|
||||
// Check for missing mandatory fields
|
||||
if (dmData.Q.FieldByName('rst_s').AsString = '') then
|
||||
if (
|
||||
(dmData.qCQRLOG.FieldByName('qsodate').AsString = '')
|
||||
or (dmData.qCQRLOG.FieldByName('time_on').AsString = '')
|
||||
or (dmData.qCQRLOG.FieldByName('callsign').AsString = '')
|
||||
or (CabrilloBandToFreq(dmData.qCQRLOG.FieldByName('band').AsString) = '') //warc or missing band
|
||||
or (dmData.qCQRLOG.FieldByName('mode').AsString = '') //missing mode
|
||||
) then
|
||||
begin
|
||||
pbExport.StepIt;
|
||||
dmData.Q.Next;
|
||||
Continue;
|
||||
end;
|
||||
if (dmData.Q.FieldByName('rst_r').AsString = '') then
|
||||
begin
|
||||
pbExport.StepIt;
|
||||
dmData.Q.Next;
|
||||
writeln(r,dmData.qCQRLOG.FieldByName('qsodate').AsString,' ',
|
||||
dmData.qCQRLOG.FieldByName('time_on').AsString,' ',
|
||||
dmData.qCQRLOG.FieldByName('callsign').AsString,' ',
|
||||
dmData.qCQRLOG.FieldByName('band').AsString,' ',
|
||||
dmData.qCQRLOG.FieldByName('mode').AsString ,' ',
|
||||
CabrilloBandToFreq(dmData.qCQRLOG.FieldByName('band').AsString));
|
||||
pbCabExport.StepIt;
|
||||
dmData.qCQRLOG.Prior;
|
||||
Continue;
|
||||
end;
|
||||
|
||||
// Check for single or ALL band
|
||||
if (CabrilloBand(dmData.Q.FieldByName('band').AsString) <> category_band) then
|
||||
begin
|
||||
if (category_band = 'ALL') then
|
||||
category_band := CabrilloBand(dmData.Q.FieldByName('band').AsString)
|
||||
if ( category_band='') then
|
||||
category_band:= dmData.qCQRLOG.FieldByName('band').AsString //initial band
|
||||
else
|
||||
begin
|
||||
if (dmData.qCQRLOG.FieldByName('band').AsString <> category_band) then //if other bands found then ALL
|
||||
category_band := 'ALL';
|
||||
end;
|
||||
i := i+1;
|
||||
s.Add('QSO: '+
|
||||
Format('%5S', [CabrilloBand(dmData.Q.FieldByName('band').AsString)])+' '+
|
||||
CabrilloMode(dmData.Q.FieldByName('mode').AsString)+' '+
|
||||
dmData.Q.FieldByName('qsodate').AsString+' '+
|
||||
StringReplace(dmData.Q.FieldByName('time_on').AsString,':','',[rfReplaceAll, rfIgnoreCase])+' '+
|
||||
Format('%-13S', [mycall])+' '+
|
||||
Format('%3S', [dmData.Q.FieldByName('rst_s').AsString])+' '+
|
||||
Format('%-6S', [dmData.Q.FieldByName('stx_string').AsString])+' '+
|
||||
// UpperCase(myloc)+' '+ // My locator is not needed here
|
||||
Format('%-13S', [dmData.Q.FieldByName('callsign').AsString])+' '+
|
||||
Format('%3S', [dmData.Q.FieldByName('rst_r').AsString])+' '+
|
||||
Format('%-6S', [dmData.Q.FieldByName('srx_string').AsString])+' '+
|
||||
'0' // Only single Ops supported currently so put transmitter ID to 0
|
||||
);
|
||||
qsopoints += CabrilloQSOPoints(dmData.Q.FieldByName('mode').AsString);
|
||||
if (multipliers.IndexOf(dmData.Q.FieldByName('srx_string').AsString) >= 0) and
|
||||
(worked_multipliers.IndexOf(dmData.Q.FieldByName('srx_string').AsString) < 0) then
|
||||
// Check for single or MIXED mode
|
||||
if ( category_mode='') then
|
||||
category_mode:= dmData.qCQRLOG.FieldByName('mode').AsString //initial mode
|
||||
else
|
||||
begin
|
||||
worked_multipliers.Add(dmData.Q.FieldByName('srx_string').AsString);
|
||||
multiplierpoints += 1;
|
||||
if (dmData.qCQRLOG.FieldByName('mode').AsString <> category_mode) then //if other modes found then MIXED
|
||||
category_mode := 'MIXED';
|
||||
end;
|
||||
pbExport.StepIt;
|
||||
dmData.Q.Next
|
||||
|
||||
loc := copy(dmData.qCQRLOG.FieldByName('loc').AsString,1,4);
|
||||
call := Format('%-'+edtCabCallWdt.Text+'.'+edtCabCallWdt.Text+'s', [dmData.qCQRLOG.FieldByName('callsign').AsString]);
|
||||
adif := dmDXCC.id_country(call,date,pfx,cont,country,itu,waz,posun,lat,long);
|
||||
TotalCountryList.Add(pfx);
|
||||
|
||||
if ((CountryToCount<>0) and (adif = CountryToCount)) then inc(UsrCountryCount);
|
||||
case cont of
|
||||
'NA': Begin
|
||||
inc(Continents[0].QsoCount);
|
||||
if (pos(pfx,Continents[0].WkdPfxs)=0 )then
|
||||
Continents[0].WkdPfxs:= Continents[0].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
'SA': Begin
|
||||
inc(Continents[1].QsoCount);
|
||||
if (pos(pfx,Continents[1].WkdPfxs)=0 )then
|
||||
Continents[1].WkdPfxs:= Continents[1].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
'OC': Begin
|
||||
inc(Continents[2].QsoCount);
|
||||
if (pos(pfx,Continents[2].WkdPfxs)=0 )then
|
||||
Continents[2].WkdPfxs:= Continents[2].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
'AS': Begin
|
||||
inc(Continents[3].QsoCount);
|
||||
if (pos(pfx,Continents[3].WkdPfxs)=0 )then
|
||||
Continents[3].WkdPfxs:= Continents[3].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
'EU': Begin
|
||||
inc(Continents[4].QsoCount);
|
||||
if (pos(pfx,Continents[4].WkdPfxs)=0 )then
|
||||
Continents[4].WkdPfxs:= Continents[4].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
'AF': Begin
|
||||
inc(Continents[5].QsoCount);
|
||||
if (pos(pfx,Continents[5].WkdPfxs)=0 )then
|
||||
Continents[5].WkdPfxs:= Continents[5].WkdPfxs+pfx+' ';
|
||||
end;
|
||||
end; //case
|
||||
|
||||
if (length(loc)=4) then
|
||||
Begin
|
||||
if (pos(loc,Continents[6].WkdPfxs)=0 )then
|
||||
begin
|
||||
Continents[6].WkdPfxs:= Continents[6].WkdPfxs+loc+' ';
|
||||
inc(Continents[6].QsoCount); //here not total, but different count
|
||||
end;
|
||||
end;
|
||||
|
||||
tmp:= 'QSO: '+
|
||||
Format('%5s', [CabrilloBandToFreq(dmData.qCQRLOG.FieldByName('band').AsString)])+' '+
|
||||
CabrilloMode(dmData.qCQRLOG.FieldByName('mode').AsString)+' '+
|
||||
dmData.qCQRLOG.FieldByName('qsodate').AsString+' '+
|
||||
StringReplace(dmData.qCQRLOG.FieldByName('time_on').AsString,':','',[rfReplaceAll, rfIgnoreCase])+' '+
|
||||
Format('%-'+edtCabCallWdt.Text+'.'+edtCabCallWdt.Text+'s', [mycall]);
|
||||
//end of common header
|
||||
|
||||
if chkCabInfoSrst.Checked then tmp:=tmp+' '+ Format('%-3s', [dmData.qCQRLOG.FieldByName('rst_s').AsString]);
|
||||
|
||||
if (cmbCabInfoSEx1.ItemIndex > 0) then
|
||||
Begin
|
||||
if (cmbCabInfoSEx1.Text = 'my_name') then
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoSEx1Wdt.Text+'.'+edtCabInfoSEx1Wdt.Text+'s', [myname])
|
||||
else
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoSEx1Wdt.Text+'.'+edtCabInfoSEx1Wdt.Text+'s',[dmData.qCQRLOG.FieldByName(
|
||||
cmbCabInfoSEx1.Text).AsString]) ;
|
||||
end;
|
||||
if (cmbCabInfoSEx2.ItemIndex > 0) then
|
||||
Begin
|
||||
if (cmbCabInfoSEx2.Text = 'my_name') then
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoSEx2Wdt.Text+'.'+edtCabInfoSEx2Wdt.Text+'s', [myname])
|
||||
else
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoSEx2Wdt.Text+'.'+edtCabInfoSEx2Wdt.Text+'s',[dmData.qCQRLOG.FieldByName(
|
||||
cmbCabInfoSEx2.Text).AsString]) ;
|
||||
end;
|
||||
//end of info sent
|
||||
|
||||
tmp:=tmp+' '+ call;
|
||||
if chkCabInfoRrst.Checked then tmp:=tmp+' '+ Format('%-3s', [dmData.qCQRLOG.FieldByName('rst_r').AsString]);
|
||||
|
||||
if (cmbCabInfoREx1.ItemIndex > 0) then
|
||||
Begin
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoREx1Wdt.Text+'.'+edtCabInfoREx1Wdt.Text+'s',[dmData.qCQRLOG.FieldByName(
|
||||
cmbCabInfoREx1.Text).AsString]) ;
|
||||
end;
|
||||
if (cmbCabInfoREx2.ItemIndex > 0) then
|
||||
Begin
|
||||
tmp:=tmp+' '+Format('%-'+edtCabInfoREx2Wdt.Text+'.'+edtCabInfoREx2Wdt.Text+'s',[dmData.qCQRLOG.FieldByName(
|
||||
cmbCabInfoREx2.Text).AsString]) ;
|
||||
end;
|
||||
//end of info rcvd
|
||||
|
||||
if (cmbCabTailTxCount.Text<>'') then tmp:=tmp+' '+Format('%1s',[ cmbCabTailTxCount.Text]);
|
||||
|
||||
s.Add(tmp);
|
||||
|
||||
inc(i);
|
||||
pbCabExport.StepIt;
|
||||
dmData.qCQRLOG.Prior
|
||||
end;
|
||||
except
|
||||
on E : Exception do
|
||||
@ -316,35 +633,50 @@ begin
|
||||
end
|
||||
end
|
||||
finally
|
||||
lblDone.Visible := True;
|
||||
dmData.trQ.Rollback;
|
||||
dmData.Q.Close
|
||||
lblCabDone.Visible := True;
|
||||
CloseFile(r);
|
||||
end;
|
||||
|
||||
//Check mode result before writing header
|
||||
case category_mode of
|
||||
'CW',
|
||||
'FM',
|
||||
'RTTY',
|
||||
'SSB',
|
||||
'MIXED' : Begin //all is ok
|
||||
if dmData.DebugLevel >=1 then writeln('CATEGORY-MODE:', category_mode);
|
||||
end;
|
||||
else category_mode:='DIGI';
|
||||
end;
|
||||
|
||||
|
||||
try
|
||||
AssignFile(f,edtFileName.Text);
|
||||
AssignFile(f,edtCabFileName.Text);
|
||||
Rewrite(f);
|
||||
// This is Cabrillo format v3.0
|
||||
Writeln(f,'START-OF-LOG: 3.0');
|
||||
Writeln(f,'CREATED-BY: CQRLOG '+dmData.VersionString);
|
||||
Writeln(f,'CONTEST: '+edtContestName.Text);
|
||||
Writeln(f,'CONTEST: '+cmbCabContestName.Text);
|
||||
Writeln(f,'CALLSIGN: '+mycall);
|
||||
Writeln(f,'CATEGORY-OPERATOR: SINGLE-OP'); // Only single op supported currently
|
||||
Writeln(f,'CATEGORY-BAND: '+category_band);
|
||||
Writeln(f,'CATEGORY-POWER: '+CabrilloPower(cbPower.ItemIndex));
|
||||
Writeln(f,'CATEGORY-MODE: '+category_mode);
|
||||
Writeln(f,'CATEGORY-POWER: '+CabrilloPower(cmbCabPower.ItemIndex));
|
||||
Writeln(f,'CATEGORY-ASSISTED: NON-ASSISTED'); // Only non-assisted currently
|
||||
Writeln(f,'CATEGORY-TRANSMITTER: ONE'); // Only one transmitter for now
|
||||
Writeln(f,'LOCATION: ');
|
||||
Writeln(f,'CLAIMED-SCORE: '+IntToStr(qsopoints*multiplierpoints));
|
||||
Writeln(f,'GRID-LOCATOR: '+UPcase(myloc)); //non standard upcase required
|
||||
Writeln(f,'LOCATION: '+edtCabLocation.Text);
|
||||
Writeln(f,'CLAIMED-SCORE: ');
|
||||
Writeln(f,'SPECIFIC: ');
|
||||
Writeln(f,'CLUB: '+club);
|
||||
Writeln(f,'NAME: '+myname);
|
||||
Writeln(f,'ADDRESS: '+mailingaddress);
|
||||
Writeln(f,'ADDRESS-CITY: '+address[1]);
|
||||
Writeln(f,'ADDRESS-STATE: '+country);
|
||||
Writeln(f,'ADDRESS-COUNTRY: '+country);
|
||||
Writeln(f,'ADDRESS-STATE-PROVINCE: ');
|
||||
Writeln(f,'ADDRESS-POSTAL-CODE: '+address[0]);
|
||||
Writeln(f,'EMAIL: '+email);
|
||||
Writeln(f,'SOAPBOX:');
|
||||
Writeln(f,'SOAPBOX:'+edtCabSoapBox.Text);
|
||||
|
||||
for j:=0 to pred(s.Count) do
|
||||
Writeln(f,s[j]);
|
||||
@ -358,24 +690,124 @@ begin
|
||||
mb_OK+mb_IconError)
|
||||
end
|
||||
end;
|
||||
if ((pbExport.Max - i) > 0) then
|
||||
if ((pbCabExport.Max - i) > 0) then
|
||||
begin
|
||||
lblError.Caption := IntToStr(pbExport.Max - i)+' of '+IntToStr(pbExport.Max)+' entries were ignored! Please check log entries.';
|
||||
lblError.Font.Color := clRed;
|
||||
end
|
||||
else
|
||||
begin
|
||||
lblError.Caption := IntToStr(s.Count)+' entries were exported.';
|
||||
lblStats.Visible := True;
|
||||
lblStatsContent.Caption := 'Valid QSOs: '+IntToStr(s.Count)+LineEnding+
|
||||
'QSO Points: '+IntToStr(qsopoints)+LineEnding+
|
||||
'Multipliers: '+IntToStr(multiplierpoints)+LineEnding;
|
||||
lblStatsContent.Visible := True;
|
||||
lblStatsSum.Caption := 'Total Sum: '+IntToStr(qsopoints*multiplierpoints);
|
||||
lblStatsSum.Visible := True;
|
||||
lblCabError.Caption := IntToStr(pbCabExport.Max - i)+' of '+IntToStr(pbCabExport.Max)+' entries were ignored! Please check /tmp/CabrilloReject.log entries.';
|
||||
lblCabError.Font.Color := clRed;
|
||||
lblCabError.Visible := True;
|
||||
end;
|
||||
lblError.Visible := True;
|
||||
|
||||
lblCabError.Caption := IntToStr(s.Count)+' entries were exported.';
|
||||
lblCabStats.Visible := True;
|
||||
lblCabStats.Font.Style:=[fsBold]; //Bold disappears when visible false->true (why?)
|
||||
mCabStatistics.Clear;
|
||||
mCabStatistics.Lines.Add( 'Valid QSOs: '+IntToStr(s.Count));
|
||||
mCabStatistics.Lines.Add('Total country count: '+IntToStr(TotalCountryList.Count));
|
||||
if (CountryToCount<>0) then
|
||||
mCabStatistics.Lines.Add('User def pfx count: '+IntToStr(UsrCountryCount));
|
||||
if (( cmbCabInfoREx1.Text='loc') or (cmbCabInfoREx2.Text='loc')) then
|
||||
mCabStatistics.Lines.Add(Continents[6].Name+' Count: '+IntToStr(Continents[6].QsoCount)+' '+Continents[6].WkdPfxs);
|
||||
|
||||
for j:=0 to 5 do
|
||||
Begin
|
||||
mCabStatistics.Lines.Add(Continents[j].Name+' Qsos:'+Format('%4s',[IntToStr(Continents[j].QsoCount)])+' Pfx: '+Continents[j].WkdPfxs);
|
||||
end;
|
||||
mCabStatistics.Visible:=true;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btCabSaveClick(Sender: TObject);
|
||||
var
|
||||
f : string ;
|
||||
begin
|
||||
if (cmbCabContestName.Text<>'') then
|
||||
begin
|
||||
f:= dlgCabSave.FileName;
|
||||
dlgCabSave.FileName:= cmbCabContestName.Text;
|
||||
end;
|
||||
dlgCabSave.DefaultExt:='.templ';
|
||||
dlgCabSave.Filter:='Cabrillo template|*.templ';
|
||||
dlgCabSave.InitialDir := dmData.HomeDir;
|
||||
if dlgCabSave.Execute then saveCabLay(dlgCabSave.FileName);
|
||||
//return export file settings
|
||||
dlgCabSave.DefaultExt:='.cbr';
|
||||
dlgCabSave.Filter:='Cabrillo file|*.cbr';
|
||||
dlgCabSave.FileName:= f;
|
||||
end;
|
||||
|
||||
procedure TfrmCabrilloExport.btCabLoadClick(Sender: TObject);
|
||||
begin
|
||||
dlgCabOpen.InitialDir := dmData.HomeDir;
|
||||
if dlgCabOpen.Execute then loadCabLay(dlgCabOpen.FileName);
|
||||
end;
|
||||
procedure TfrmCabrilloExport.saveCabLay(filename:String);
|
||||
var
|
||||
filini : TIniFile;
|
||||
begin
|
||||
filini := TIniFile.Create(fileName);
|
||||
try
|
||||
filini.WriteString('CabrilloExport','FileName',edtCabFileName.Text);
|
||||
filini.WriteString('CabrilloExport','ContestName',cmbCabContestName.Text);
|
||||
filini.WriteInteger('CabrilloExport','Power',cmbCabPower.ItemIndex);
|
||||
filini.WriteString('CabrilloExport','Location',edtCabLocation.Text);
|
||||
filini.WriteString('CabrilloExport','SoapBox',edtCabSoapBox.Text);
|
||||
filini.WriteString('CabrilloExport','CallsWidth', edtCabCallWdt.Text);
|
||||
|
||||
filini.WriteBool('CabrilloExport','incRSTs',chkCabInfoSrst.Checked);
|
||||
filini.WriteInteger('CabrilloExport','StxOrder',cmbCabInfoSEx1.ItemIndex);
|
||||
filini.WriteString('CabrilloExport','StxWidth', edtCabInfoSEx1Wdt.Text);
|
||||
filini.WriteInteger('CabrilloExport','StxStringOrder',cmbCabInfoSEx2.ItemIndex);
|
||||
filini.WriteString('CabrilloExport','StxStringWidth', edtCabInfoSEx2Wdt.Text);
|
||||
|
||||
filini.WriteBool('CabrilloExport','incRSTr',chkCabInfoRrst.Checked);
|
||||
filini.WriteInteger('CabrilloExport','SrxOrder',cmbCabInfoREx1.ItemIndex);
|
||||
filini.WriteString('CabrilloExport','SrxWidth', edtCabInfoREx1Wdt.Text);
|
||||
filini.WriteInteger('CabrilloExport','SrxStringOrder',cmbCabInfoREx2.ItemIndex);
|
||||
filini.WriteString('CabrilloExport','SrxStringWidth', edtCabInfoREx2Wdt.Text);
|
||||
|
||||
filini.WriteInteger('CabrilloExport','TxCount',cmbCabTailTxCount.ItemIndex);
|
||||
filini.WriteInteger('CabrilloExport','CountryToCount',CountryToCount);
|
||||
finally
|
||||
filini.Free
|
||||
end;
|
||||
end;
|
||||
Procedure TfrmCabrilloExport.loadCabLay(filename:string);
|
||||
var
|
||||
filini : TIniFile;
|
||||
begin
|
||||
filini := TIniFile.Create(fileName);
|
||||
try
|
||||
edtCabFileName.Text := filini.ReadString('CabrilloExport','FileName','');
|
||||
if edtCabFileName.Text='' then
|
||||
dlgCabSave.InitialDir := dmData.UsrHomeDir
|
||||
else
|
||||
dlgCabSave.InitialDir := ExtractFilePath(edtCabFileName.Text);
|
||||
cmbCabContestName.Text := filini.ReadString('CabrilloExport','ContestName','');
|
||||
|
||||
cmbCabPower.ItemIndex:= filini.ReadInteger('CabrilloExport','Power',0);
|
||||
edtCabLocation.Text:= filini.ReadString('CabrilloExport','Location','');
|
||||
edtCabSoapBox.Text:= filini.ReadString('CabrilloExport','SoapBox','');
|
||||
edtCabCallWdt.Text:= filini.ReadString('CabrilloExport','CallsWidth', '13');
|
||||
|
||||
chkCabInfoSrst.Checked:= filini.ReadBool('CabrilloExport','incRSTs',True);
|
||||
cmbCabInfoSEx1.ItemIndex:= filini.ReadInteger('CabrilloExport','StxOrder',0);
|
||||
edtCabInfoSEx1Wdt.Text:= filini.ReadString('CabrilloExport','StxWidth','6');
|
||||
cmbCabInfoSEx2.ItemIndex := filini.ReadInteger('CabrilloExport','StxStringOrder',0);
|
||||
edtCabInfoSEx2Wdt.Text := filini.ReadString('CabrilloExport','StxStringWidth', '6');
|
||||
|
||||
chkCabInfoRrst.Checked:= filini.ReadBool('CabrilloExport','incRSTr',True);
|
||||
cmbCabInfoREx1.ItemIndex:= filini.ReadInteger('CabrilloExport','SrxOrder',0);
|
||||
edtCabInfoREx1Wdt.Text:= filini.ReadString('CabrilloExport','SrxWidth','6');
|
||||
cmbCabInfoREx2.ItemIndex := filini.ReadInteger('CabrilloExport','SrxStringOrder',0);
|
||||
edtCabInfoREx2Wdt.Text := filini.ReadString('CabrilloExport','SrxStringWidth', '6');
|
||||
cmbCabTailTxCount.ItemIndex := filini.ReadInteger('CabrilloExport','TxCount',0);
|
||||
|
||||
CountryToCount:= filini.ReadInteger('CabrilloExport','CountryToCount',0);
|
||||
if ( CountryToCount > 0) then edtCabCountC.Text:= dmDXCC.PfxFromADIF(CountryToCount);
|
||||
finally
|
||||
filini.Free
|
||||
end
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -120,7 +120,7 @@ object frmContestFilter: TfrmContestFilter
|
||||
OnKeyUp = FormKeyUp
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.8.2.0'
|
||||
LCLVersion = '2.0.8.0'
|
||||
object btnOK: TButton
|
||||
AnchorSideLeft.Control = btnCancel
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
@ -176,14 +176,14 @@ object frmContestFilter: TfrmContestFilter
|
||||
Width = 522
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Contest name'
|
||||
ClientHeight = 102
|
||||
ClientWidth = 516
|
||||
ClientHeight = 110
|
||||
ClientWidth = 520
|
||||
TabOrder = 0
|
||||
object cmbContestName: TComboBox
|
||||
AnchorSideLeft.Control = gbContName
|
||||
AnchorSideTop.Control = gbContName
|
||||
Left = 6
|
||||
Height = 25
|
||||
Height = 33
|
||||
Hint = 'Choose contest from logged QSOs'
|
||||
Top = 0
|
||||
Width = 506
|
||||
@ -191,233 +191,7 @@ object frmContestFilter: TfrmContestFilter
|
||||
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
|
||||
BorderSpacing.Left = 6
|
||||
DropDownCount = 3
|
||||
ItemHeight = 17
|
||||
Items.Strings = (
|
||||
'070-160M-SPRINT'
|
||||
'070-3-DAY'
|
||||
'070-31-FLAVORS'
|
||||
'070-40M-SPRINT'
|
||||
'070-80M-SPRINT'
|
||||
'070-PSKFEST'
|
||||
'070-ST-PATS-DAY'
|
||||
'070-VALENTINE-SPRINT'
|
||||
'10-RTTY'
|
||||
'1010-OPEN-SEASON'
|
||||
'7QP'
|
||||
'AL-QSO-PARTY'
|
||||
'ALL-ASIAN-DX-CW'
|
||||
'ALL-ASIAN-DX-PHONE'
|
||||
'ANARTS-RTTY'
|
||||
'ANATOLIAN-RTTY'
|
||||
'AP-SPRINT'
|
||||
'AR-QSO-PARTY'
|
||||
'ARI-DX'
|
||||
'ARRL-10'
|
||||
'ARRL-160'
|
||||
'ARRL-222'
|
||||
'ARRL-DX-CW'
|
||||
'ARRL-DX-SSB'
|
||||
'ARRL-EME'
|
||||
'ARRL-FIELD-DAY'
|
||||
'ARRL-RR-CW'
|
||||
'ARRL-RR-RTTY'
|
||||
'ARRL-RR-SSB'
|
||||
'ARRL-RTTY'
|
||||
'ARRL-SCR'
|
||||
'ARRL-SS-CW'
|
||||
'ARRL-SS-SSB'
|
||||
'ARRL-UHF-AUG'
|
||||
'ARRL-VHF-JAN'
|
||||
'ARRL-VHF-JUN'
|
||||
'ARRL-VHF-SEP'
|
||||
'AZ-QSO-PARTY'
|
||||
'BARTG-RTTY'
|
||||
'BARTG-SPRINT'
|
||||
'BC-QSO-PARTY'
|
||||
'CA-QSO-PARTY'
|
||||
'CIS-DX'
|
||||
'CO-QSO-PARTY'
|
||||
'CQ-160-CW'
|
||||
'CQ-160-SSB'
|
||||
'CQ-M'
|
||||
'CQ-VHF'
|
||||
'CQ-WPX-CW'
|
||||
'CQ-WPX-RTTY'
|
||||
'CQ-WPX-SSB'
|
||||
'CQ-WW-CW'
|
||||
'CQ-WW-RTTY'
|
||||
'CQ-WW-SSB'
|
||||
'CT-QSO-PARTY'
|
||||
'CVA-DX-CW'
|
||||
'CVA-DX-SSB'
|
||||
'CWOPS-CW-OPEN'
|
||||
'CWOPS-CWT'
|
||||
'DARC-WAEDC-CW'
|
||||
'DARC-WAEDC-RTTY'
|
||||
'DARC-WAEDC-SSB'
|
||||
'DARC-WAG'
|
||||
'DE-QSO-PARTY'
|
||||
'DL-DX-RTTY'
|
||||
'DMC-RTTY'
|
||||
'EA-CNCW'
|
||||
'EA-DME'
|
||||
'EA-PSK63'
|
||||
'EA-RTTY (import-only)'
|
||||
'EA-SMRE-CW'
|
||||
'EA-SMRE-SSB'
|
||||
'EA-VHF-ATLANTIC'
|
||||
'EA-VHF-COM'
|
||||
'EA-VHF-COSTA-SOL'
|
||||
'EA-VHF-EA'
|
||||
'EA-VHF-EA1RCS'
|
||||
'EA-VHF-QSL'
|
||||
'EA-VHF-SADURNI'
|
||||
'EA-WW-RTTY'
|
||||
'EPC-PSK63'
|
||||
'EU Sprint'
|
||||
'EU-HF'
|
||||
'EU-PSK-DX'
|
||||
'EUCW160M'
|
||||
'FALL SPRINT'
|
||||
'FL-QSO-PARTY'
|
||||
'GA-QSO-PARTY'
|
||||
'HA-DX'
|
||||
'HELVETIA'
|
||||
'HI-QSO-PARTY'
|
||||
'HOLYLAND'
|
||||
'IA-QSO-PARTY'
|
||||
'IARU-FIELD-DAY'
|
||||
'IARU-HF'
|
||||
'ID-QSO-PARTY'
|
||||
'IL QSO Party'
|
||||
'IN-QSO-PARTY'
|
||||
'JARTS-WW-RTTY'
|
||||
'JIDX-CW'
|
||||
'JIDX-SSB'
|
||||
'JT-DX-RTTY'
|
||||
'KS-QSO-PARTY'
|
||||
'KY-QSO-PARTY'
|
||||
'LA-QSO-PARTY'
|
||||
'LDC-RTTY'
|
||||
'LZ DX'
|
||||
'MAR-QSO-PARTY'
|
||||
'MD-QSO-PARTY'
|
||||
'ME-QSO-PARTY'
|
||||
'MI-QSO-PARTY'
|
||||
'MIDATLANTIC-QSO-PARTY'
|
||||
'MN-QSO-PARTY'
|
||||
'MO-QSO-PARTY'
|
||||
'MS-QSO-PARTY'
|
||||
'MT-QSO-PARTY'
|
||||
'NA-SPRINT-CW'
|
||||
'NA-SPRINT-RTTY'
|
||||
'NA-SPRINT-SSB'
|
||||
'NAQP-CW'
|
||||
'NAQP-RTTY'
|
||||
'NAQP-SSB'
|
||||
'NC-QSO-PARTY'
|
||||
'ND-QSO-PARTY'
|
||||
'NE-QSO-PARTY'
|
||||
'NEQP'
|
||||
'NH-QSO-PARTY'
|
||||
'NJ-QSO-PARTY'
|
||||
'NM-QSO-PARTY'
|
||||
'NRAU-BALTIC-CW'
|
||||
'NRAU-BALTIC-SSB'
|
||||
'NV-QSO-PARTY'
|
||||
'NY-QSO-PARTY'
|
||||
'OCEANIA-DX-CW'
|
||||
'OCEANIA-DX-SSB'
|
||||
'OH-QSO-PARTY'
|
||||
'OK-DX-RTTY'
|
||||
'OK-OM-DX'
|
||||
'OK-QSO-PARTY'
|
||||
'OMISS-QSO-PARTY'
|
||||
'ON-QSO-PARTY'
|
||||
'OR-QSO-PARTY'
|
||||
'PA-QSO-PARTY'
|
||||
'PACC'
|
||||
'PSK-DEATHMATCH'
|
||||
'QC-QSO-PARTY'
|
||||
'RAC (import-only)'
|
||||
'RAC-CANADA-DAY'
|
||||
'RAC-CANADA-WINTER'
|
||||
'RDAC'
|
||||
'RDXC'
|
||||
'REF-160M'
|
||||
'REF-CW'
|
||||
'REF-SSB'
|
||||
'REP-PORTUGAL-DAY-HF'
|
||||
'RI-QSO-PARTY'
|
||||
'RSGB-160'
|
||||
'RSGB-21/28-CW'
|
||||
'RSGB-21/28-SSB'
|
||||
'RSGB-80M-CC'
|
||||
'RSGB-AFS-CW'
|
||||
'RSGB-AFS-SSB'
|
||||
'RSGB-CLUB-CALLS'
|
||||
'RSGB-COMMONWEALTH'
|
||||
'RSGB-IOTA'
|
||||
'RSGB-LOW-POWER'
|
||||
'RSGB-NFD'
|
||||
'RSGB-ROPOCO'
|
||||
'RSGB-SSB-FD'
|
||||
'RUSSIAN-RTTY'
|
||||
'SAC-CW'
|
||||
'SAC-SSB'
|
||||
'SARTG-RTTY'
|
||||
'SC-QSO-PARTY'
|
||||
'SCC-RTTY'
|
||||
'SD-QSO-PARTY'
|
||||
'SMP-AUG'
|
||||
'SMP-MAY'
|
||||
'SP-DX-RTTY'
|
||||
'SPAR-WINTER-FD'
|
||||
'SPDXContest'
|
||||
'SPRING SPRINT'
|
||||
'SR-MARATHON'
|
||||
'STEW-PERRY'
|
||||
'SUMMER SPRINT'
|
||||
'TARA-GRID-DIP'
|
||||
'TARA-RTTY'
|
||||
'TARA-RUMBLE'
|
||||
'TARA-SKIRMISH'
|
||||
'TEN-RTTY'
|
||||
'TMC-RTTY'
|
||||
'TN-QSO-PARTY'
|
||||
'TX-QSO-PARTY'
|
||||
'UBA-DX-CW'
|
||||
'UBA-DX-SSB'
|
||||
'UK-DX-BPSK63'
|
||||
'UK-DX-RTTY'
|
||||
'UKR-CHAMP-RTTY'
|
||||
'UKRAINIAN DX'
|
||||
'UKSMG-6M-MARATHON'
|
||||
'UKSMG-SUMMER-ES'
|
||||
'URE-DX (import-only)'
|
||||
'US-COUNTIES-QSO'
|
||||
'UT-QSO-PARTY'
|
||||
'VA-QSO-PARTY'
|
||||
'VENEZ-IND-DAY'
|
||||
'VIRGINIA QSO PARTY (import-only)'
|
||||
'VOLTA-RTTY'
|
||||
'WA-QSO-PARTY'
|
||||
'WI-QSO-PARTY'
|
||||
'WIA-HARRY ANGEL'
|
||||
'WIA-JMMFD'
|
||||
'WIA-OCDX'
|
||||
'WIA-REMEMBRANCE'
|
||||
'WIA-ROSS HULL'
|
||||
'WIA-TRANS TASMAN'
|
||||
'WIA-VHF/UHF FD'
|
||||
'WIA-VK SHIRES'
|
||||
'WINTER SPRINT'
|
||||
'WV-QSO-PARTY'
|
||||
'WY-QSO-PARTY'
|
||||
'XE-INTL-RTTY'
|
||||
'YOHFDX'
|
||||
'YUDXC'
|
||||
)
|
||||
ItemHeight = 0
|
||||
MaxLength = 40
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
|
@ -83,7 +83,6 @@ procedure TfrmContestFilter.FormShow(Sender: TObject);
|
||||
|
||||
begin
|
||||
dmUtils.LoadFontSettings(self);
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrmContestFilter.FormKeyUp(Sender: TObject; var Key: Word;
|
||||
|
Loading…
Reference in New Issue
Block a user