Locator in standard format:

This was intended to be a fix for issue #187 but it grow up during programming.

 -sets now locator writing by standard format "AB12cd" as described in
  https://en.wikipedia.org/wiki/Maidenhead_Locator_System#Description_of_the_system
  Also adif.org uses this link as reference in their descriptions.
  Writing format is forced at typing phase (I hope I found all loc inputs).
  Also ADIF input/output forces formatting and finally save qso to database will make sure the format is right.

 -Playing with locators made an idea of showing distances in QSO list.
  How ever Lazarus DBGrid does not allow showing calculated columns.
  Either an additional unit must be used to do this or database needs a new column "distance".
  That is why a selected QSO's distance is shown at bottom status area with "comment", "Award" and QSL times
  with total and longest qso distances of log or filter selection.
  But only if checked to be visible from preferences/visible columns (although it is not actually a column).

 -preferences/program/Show distance in miles affects also all places where distance is now shown.
 -Distance can also be selected to exist in ADIF, HTML and QSL label exports.
 -QSL label export has some new selections with distance.
  They are: Propagation, Satellite, Contest name and contest exchanges (4)
 -HTML export output is fixed to support CSS and HTML5.
  HTML export has now working column width (by average char count, not in pixels) or Auto column width selection.
 -HTML export column names can be changed by user.
 -Help files are updated

Squashed commit of the following:

commit de1cccf58e7698b275fa49be7765dde6665199f4
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Oct 2 20:09:08 2019 +0300

    Found small big in fraExportPref

commit f7697e910d6cf0e595d22d7c6fefb5999b04255b
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Oct 1 09:55:34 2019 +0300

    help update

commit a4958fda68db0117666ac47841aa92a28a473b36
Author: OH1KH <oh1kh@sral.fi>
Date:   Mon Sep 30 16:56:29 2019 +0300

    NewQso:fix rxfreq input limit. QSLlabes: new selections to print

commit 97479517135aa2c973cd02045bdc3af81f4c7046
Author: OH1KH <oh1kh@sral.fi>
Date:   Sun Sep 29 14:52:58 2019 +0300

    Fixed: adif: export line cut. Html: profile export

commit 596802fdb2959495b1cb6f0b53363c249cb48fc4
Author: OH1KH <oh1kh@sral.fi>
Date:   Sun Sep 29 10:37:53 2019 +0300

    More bugs found

commit cd3b9b2d7dbbdb03a80e804b9829ebe8e8a47092
Author: OH1KH <oh1kh@sral.fi>
Date:   Sat Sep 28 18:36:17 2019 +0300

    help file updates

commit f35c5d3f61ad4f29d8012e899a94ed23586f373a
Author: OH1KH <oh1kh@sral.fi>
Date:   Sat Sep 28 12:27:49 2019 +0300

    Some code fixes. Now needs testing with ADIF impoirt/export and HTML export

commit 099c6a452d60b3f01271be16c84fab08a70466c5
Author: OH1KH <oh1kh@sral.fi>
Date:   Fri Sep 27 22:25:17 2019 +0300

    Now HTML export idea works. Width counting not.Also adif export needs testing

commit 4b3ff4d6f23ea18d44cfb19090b6b15c070ce4b8
Author: OH1KH <oh1kh@sral.fi>
Date:   Fri Sep 27 21:26:56 2019 +0300

    Little bit closer to working HTML export. But not ready!

commit 0f9e559548be84b3b3ed1069e1ed85d0dfa846b4
Author: OH1KH <oh1kh@sral.fi>
Date:   Fri Sep 27 19:14:44 2019 +0300

    Untested backup push

commit 0a1107548c3b58beaf08d727f0426395ddf3dc52
Author: OH1KH <oh1kh@sral.fi>
Date:   Fri Sep 27 13:32:30 2019 +0300

    small steps, but still errors and lot of fix

commit cb1e3934d0c208dcaac3fd45fa18194234bcc48f
Merge: 42d7e5c c820289
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 26 21:10:54 2019 +0300

    Merge branch 'master' into loc_std

commit 42d7e5caf3cb7f2a914a776b631a4b54beb69293
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 26 21:07:34 2019 +0300

     Big changes to html export. Not full ready yet

commit 32e70f0f6401af78bcfddc0c48befc8158d867cf
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 25 20:53:39 2019 +0300

    rewiting of HTML export. Not ready yet

commit f5faa689f3ba7adb3003c67941d2db2d6520b9ef
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Sep 24 11:04:37 2019 +0300

    Minor fixes. Might help for 'xxxx-xx-xx is not valid date' error that sometimes occurs again (once fixed in wsjt remote)

commit 8512a06efacfe73419dbb507b95042692325a20e
Author: OH1KH <oh1kh@sral.fi>
Date:   Mon Sep 23 19:33:42 2019 +0300

    Several small fixes

commit 2a48fdfffae905f4afe32eb8e99a89e16d7c1491
Author: OH1KH <oh1kh@sral.fi>
Date:   Mon Sep 23 11:42:23 2019 +0300

    Contest has loc writing by std. Lbl print no dist unit.Html exp mi/km but has error

commit af75d9a4d86130aa460684bd9859fa8505d5b7d8
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 19 19:53:40 2019 +0300

    Adding distance in km/mi by preferences/program setting

commit 9375f57beb1952109db35b24b47d1dc32e4163fb
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 19 13:21:41 2019 +0300

    Updates to help files

commit c2954dcbaf600507844f4ce6c25951b50d7edf17
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 19 13:11:50 2019 +0300

    Updates to help files

commit ce7bbf2f184c93d063c2141d20cf5060813798d4
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 19 11:21:10 2019 +0300

    fixed preferences view

commit 6335fdaedc051bcffde70e1c9c0cf4052abb0748
Merge: c9dc424 3bbe8db
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 19 10:56:13 2019 +0300

    Merge branch 'master' into loc_std

commit c9dc42436df9c7a96d914491af29b724df99009c
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 18 09:53:16 2019 +0300

    Preferences visible columns: add (in pnl) for Distance as it is not in column

commit 2670c54d8ca8ccf614d65d3b1f6dcd636d83646f
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 18 09:48:31 2019 +0300

    Added distance choice to qsl label printing

commit 8406464cfa1dd7240afca7f12fe959d3fd7141da
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Sep 17 21:14:43 2019 +0300

    Removed not working distance column code. Focus to first release with only status panel distance

commit 7154459c8103fea746f809247e50446d81c1501c
Author: OH1KH <oh1kh@sral.fi>
Date:   Mon Sep 16 16:55:43 2019 +0300

    commented out not woking parts of code

commit 594e0b9d3862d4cb635ab101c11b0ba558b97b62
Author: OH1KH <oh1kh@sral.fi>
Date:   Fri Sep 13 13:20:48 2019 +0300

    Again a try to write calculated content to dispaly-field(causes error)

commit 63de897ce8289478291116b5ee2168cad0a7bf5f
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 12 12:00:47 2019 +0300

    some fixes to distance visibility

commit 70a95c4fdd58dd78788ab7ad33bdd1037581d581
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 11 17:45:35 2019 +0300

    Problem with inherited fraEx fixed (?)

commit d014e960143102332677e8a8b6d4065436d69aab
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 11 13:12:27 2019 +0300

    Fixed anchoring of export selections frame

commit ac6914ee14648e14325cc11797e05592b1f5f189
Author: OH1KH <oh1kh@sral.fi>
Date:   Mon Sep 9 18:45:12 2019 +0300

     Not yet (?)a way to get 'distance' to dbGrid as it is not database field'

commit a0376a9a86ca9d54e21ffcd581fb5010d68daaed
Merge: 9609c81 a5d0300
Author: OH1KH <oh1kh@sral.fi>
Date:   Sun Sep 8 18:26:07 2019 +0300

    Merge branch 'master' into loc_std

commit 9609c8125e0dedba5945722159137363ea95c7bb
Author: OH1KH <oh1kh@sral.fi>
Date:   Sun Sep 8 17:01:47 2019 +0300

    Sum is now called from better place, but still has problems with activate/deactivate filter

commit 04565c5e0847ccf3450da6de2cbb9553b778e7ae
Author: OH1KH <oh1kh@sral.fi>
Date:   Sat Sep 7 17:29:18 2019 +0300

    counts dist,maxdist,sumdist at Main and Html export. Exports DISTANCE tag with adif export

commit d9bd63ccf676f812e6af6b3e21ef8e69b0099b50
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu Sep 5 12:11:16 2019 +0300

    fixed log in Group edit. Where else loc is still unfixed?

commit 5e229a4345c0c540588ddc1278ab7f049f97a632
Author: OH1KH <oh1kh@sral.fi>
Date:   Wed Sep 4 13:50:14 2019 +0300

    new function StdFormatLocator. Related code changes.

commit f13b240456cbadb2ecc3467a48acb811962f8d05
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Sep 3 20:22:57 2019 +0300

    Set grid locator writing format to standard (up/lo case) AA00bb
This commit is contained in:
OH1KH 2019-10-03 13:14:17 +03:00
parent c8202891c7
commit f29f9290f3
62 changed files with 3557 additions and 1800 deletions

View File

@ -45,7 +45,8 @@ logging.
<p>
<b>HOTKEYS</b> work like in <a href="h20.html">New QSO window</a>.
<ul><li> <b>2x ESC</b> clears all fileds</li>
<li>Note: <b>1x ESC</b> returns cursor back to Call-field (if cursor is in some of the other fields like RSTr) and places cursor at the end of callsign for possible repairs.</li>
<li>Note: <b>1x ESC</b> returns cursor back to Call-field (if cursor is in some of the other fields like RSTr) and places cursor at the end of callsign for possible repairs.<br>
It also halts CW memory output if it is just running.</li>
<li> <b> F1..F10 </b>send CW macros etc.</li></ul>
</p>
@ -59,7 +60,7 @@ Form Contest has following fields and checkboxes:<br>
<li><b>MSG s</b> sometimes you may need an additional message with number, or just a message with no number. On high band contests you may type your locator here.</li>
<li><b>RST r</b> copied from NewQSO, so should correspond used mode. Can be changed.</li>
<li><b>NR r</b> serial number you receive. No if no serial number then setting this changes tab order so that it jumps directly to MSG r from Call (and after that NR r). Note: you can feed only numbers to NR r field.</li>
<li><b>MSG r</b> message you receive, if <b>MSG is LOC</b> is checked then message will be placed <b>ONLY</b> to NewQSO/Grid field <b>NOT</b> to received rst field</li>
<li><b>MSG r</b> message you receive, if <b>MSG is LOC</b> is checked then message will be placed <b>ALSO</b> to NewQSO/Grid field <b>AND</b> to received msg field</li>
<li><b>Save QSO</b> Save QSO button at NewQSO, increments NR and clears fields.</li>
<li><b>Clear all</b> Clear all fields and prepare to enter new QSO</li>
<li><b>SPACE is TAB</b> when checked space bar acts like TAB-key moving to next field.
@ -71,7 +72,7 @@ type callsign-&gt;press TAB-&gt;type contest rxnumber-&gt;press TAB-&gt;type con
Or hit ENTER after rxnumber if no additional message is exchanged.
</p>
<p>Remember that pressing <b>ENTER</b> key at any field saves qso with existing values. How ever there must be
callsign at least three characters long. Sent/Received number and message are not needed.</p>
callsign of least three characters long. Sent/Received number and message are not needed.</p>
<p>
Contest numbers and messages are saved in log into their own columns. Use <b>preferences/Visible columns</b> to show them in <b>Qso list</b>.
For editing a qso these columns appear to <b>NewQSO</b> window when <b>contest</b> window is open and NewQso window is streched horizontally (DXCCinfo may override them).

View File

@ -120,7 +120,7 @@
is of high importance because it determines your accurate position (ie. you don't need to enter
your exact coordinates). The QRA Locator is used in beam heading and distance computation as
well as the start point of the simplified path to the other station which appears on the
grayline map.
grayline map.<br>Locator writing format is forced to "AB12cd" that follows definition https://en.wikipedia.org/wiki/Maidenhead_Locator_System#Description_of_the_system
</div>
<p align=center><img src=img/line.png></p>
<a name=ah4><h2><strong>New QSO</strong></h2></a>
@ -169,7 +169,9 @@
<img src=img/h8.png border=0><br><br>
<div align=justify>
Checked columns are visible in the previous QSO list appearing at the top of the
logging screen.
logging screen. Except "Distance" that makes calculated distances visible at QSO list panel area.
<br>Display of distances requires that preferences/station/locator is set and applied (automatic) to every qso and that at least 4 digit locator (when "ll" is added as 5 and 6th char) of destination station is logged.
Sometimes importing logs from other logging program may leave my locator unset. In this case QSO list/File/Group edit must be used for updating my locator field.
</div>
<p align=center><img src=img/line.png></p>
<a name=ah6><h2><strong>Bands</strong></h2></a>
@ -244,8 +246,8 @@ changed at any time, however a program restart will probably be needed to make t
take effect.<br><br>
<strong>User definable digital modes</strong> can be set up in a separate box. Use comma
as a separator, ie. BPSK31,QPSK64,OLIVIA,CONTESTIA etc.<br>
Some TRX like ICOM don't have support for this in HamLib. To get mode settings work, set
all values to 0 (zero).
Some <strong>TRX like ICOM don't have support for this in HamLib. To get mode settings work, set
all values to 0 (zero).</strong>
<p align=center><img src=img/line.png></p>
<a name=ah9><h2><strong>QTH Profiles</strong></h2></a>
<img src=img/h12.png border=0><br><br>
@ -274,8 +276,14 @@ for each operation.
</table>
<br><br>
This option allows an easy setup of the log fields to be exported into ADIF or HTML format.
Only checked fields are exported. The 'Width' option denotes the column size in the HTML
export.<br><br>
Only checked fields are exported. The 'Column' option names columns at header line. 'Width' option denotes the column width in approx. count of 16px characters.
Both options affect only for the HTML export.
<br>Width setting is ignored if "HTML auto column width" is checked when longest text in column (column name or data) sets the column width.
<br>Distances are not exported when doing log backup at cqlog closing phase. They will be calculated and exported (if selected) in ADIF, HTML and QSL label printing.
Calculation of distances requires that preferences/station/locator is set and applied (automatic) to every qso and that at least 4 digit locator
(in case "ll" is added as 5 and 6th char to get the center of grid) of destination station logged. Sometimes importing logs from other logging program may leave own station locator unset. In this case QSO list/File/Group edit must be used for updating "my locator" field.
<br><br>
<a name=ah11><h2><strong>DX cluster</strong></h2></a>
<img src=img/h14.png border=0><br><br>
This dialog allows an easy setup of the DX cluster spot filtering. Check the bands you want
@ -571,7 +579,7 @@ There are no known dependencies issues.<br><br>
Of course, the export and compression takes some time, depending on the log size (QSO count).
If you are not in a hurry, allow the program 2-3 minutes to perform this safety measure.
We reccomend you backup your log to your hard drive from there it should be copied to
other media (your server, USB flash, a memory card etc.).
other media (your server, USB flash, a memory card etc.).<br>Distances are not exported in backup phase. So do not expect to find them from backup file.
</br></br><img src="img/h119.png"><br><br>
Check both "Enable autobackup after program ends" and "Ask before creating a backup" to prevent closing cqrlog accidently. Answering <strong>"Cancel"</strong> to question returns to NewQso without backup.
<a name=ch4><h2><strong>External viewers</strong></h2></a>

View File

@ -277,7 +277,7 @@
distance, azimuth (direction), date and local time of the target point
and the salutation corresponding to the local time (GM, GE etc.). <br><br>
<b>Contest section</b> in NewQSO window is for <b>editing logged qsos, not for entering contest qsos</b>.
This part is only visible if contest window is active.<br><br>
<i> This part is only visible if contest window is active.</i><br><br>
You can add a general long note to your log with the Ctrl-N key (from

View File

@ -96,7 +96,7 @@ For LoTW operations see <a href=h7.html><strong>here</strong></a>.
(Send Manager- Direct) in any combination are exported.
</div>
<br>
<IMG src="img/h70.png"><br><br>
<IMG src="img/h70.png"><IMG src="img/h70b.png"><br><br>
<strong>Batch QSL label printing</strong>
<div align="justify">This method can be used if no QSO records are marked.

View File

@ -59,9 +59,24 @@
<p align=center><img src=img/line.png></p>
<a name="grp"><h2><strong>Group edit</strong></h2></a>
<table border="0" cellpadding="5" cellspacing="2" width="100%">
<tbody>
<tr>
<td valign="top"><img src="img/exc.png"></td>
<td bgcolor=ffffcc valign="top" align="justify"><strong><font color="red">WARNING!</font>
There is no UNDO option!</strong> If you click the <em>Apply</em> button,
there is no way to return to previous values! Make a backup before any group edit
operation!
</td>
</tr>
</tbody>
</table>
<div align="justify">A record can be tagged by clicking the corresponding icon or
with the mouse - hold the Ctrl key on the keyboard and left click on the QSO record
to be tagged.<br></div>
to be tagged.<br>
Or you can set up filter and pick qsos that need editing.
</div>
<p><img src=img/h90.png></p>
<div align="justify">Click the <em>Edit QSO</em> button and the group edit menu
appears:<br></div>

View File

@ -69,13 +69,31 @@
When <b>OK</b> is pressed export begins.<br><br>
<p align=center><img src=img/line.png></p>
<a name=ah26><strong>HTML export</strong></a><br><br>
The same as above, only difference is to choose the 'HTML' option.<br><br>
The same as above, only difference is to set column names and widths (in character counts). Note that contest Nr and Msg column names will get "R" or "S" added as last letter of column name.
<br><br>
<img src=img/h45d.png><br><br>
If "HTML auto size columns" is checked width setting is ignored and column width is set by longest text (in header or data).
<br><br>
<img src=img/h45e.png><br><br>
Choose the 'HTML' option from QSO list Export menu.<br><br>
<p align=center><img src=img/line.png></p>
<p><a name=ah27><strong>Program version update:</strong></a><br><br>
Ubuntu 16.04, 17.10, 18.04 users can use CQRLOGs repository on Launchpad. To add repository to your system, put into terminal this:<br/>
<br>sudo add-apt-repository ppa:ok2cqr/ppa;sudo apt-get update;sudo apt-get install cqrlog<br>
<br>For those who does not use Ubuntu, load install package, or binaries, from: Cqrlog.com <a href="https://www.cqrlog.com/download" target="_new"> download page.</a><br>
<br>The binaries should work in any distribution. Please don't forget to install MySQL server, MySQL client, Hamlib libraries and if LoTW support is desired, trustedqsl package and libssl-devel must be installed.</p>
<table width="100%" border="0" cellpadding="5" cellspacing="2">
<tbody>
<tr>
<td valign="top"><img src="img/note.png"></td>
<td style="width: 100%; text-align: justify; background-color: rgb(204, 255, 255);">
<strong><font color="blue">Note:</font></strong> Very often Cqrlog version update requires just file /usr/bin/cqrlog change to latest version. If your package manager does not support latest version and you have well running old version in use just copy folder ~/.config/cqrlog with all files and subfolders to safe place as backup. Copy also
/usr/bin/cqrlog to same place. Then download the tgz file "Complete application directory for other distributions", extract file /usr/bin/cqrlog from there and copy it to your /usr/bin folder (you need to use root priveleges I.E sudo for that).
If everything works you have latest version. If not, just copy back your saved folder ~/.config/cqrlog and the old /usr/bin/cqrlog.
</td>
</tr>
</tbody>
</table>
<p align=center><img src=img/line.png></p>
<a name=ah28><strong>How to update Country files:</strong></a><br>
<ol>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 58 KiB

BIN
help/img/h45d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
help/img/h45e.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
help/img/h70b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,5 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<HEAD>
<META NAME="GENERATOR" CONTENT="Linux">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Last-Modified" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
</HEAD>
<frameset cols="15%,*">
<frame name="left" src="index_left.html">

View File

@ -1,6 +1,12 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
<HEAD>
<META NAME="GENERATOR" CONTENT="Linux">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Last-Modified" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>CQRLOG - Help Index</title></head>
<body>
<h2><a name="aa"><strong>Contents:</strong></a></h2>

View File

@ -1,6 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en-us">
<head>
<META NAME="GENERATOR" CONTENT="Linux">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Last-Modified" CONTENT="0">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<title>CQRLOG - Help Index</title></head>
<body>
<strong><h1>CQRLOG for LINUX (version 2.3.0)</h1></strong>

View File

@ -80,6 +80,9 @@ end;{isloc}
procedure VzdalenostAAzimut(loc1,loc2 : String;var azim,qrb : String);
begin
loc1:=Upcase(loc1);
loc2:=Upcase(loc2);
if ((not isloc(loc1)) or (not isloc(loc2))) then
begin
azim := '';
@ -93,6 +96,7 @@ begin
end;
procedure LocToCoordinate(loc : String; var Latitude, Longitude : Real);
begin
loc:=Upcase(loc);
Latitude := dely(loc);
Longitude := delx(loc)
end;

View File

@ -97,4 +97,4 @@ begin
until false;
wend:
close(f1);}
end.
end.

View File

@ -19,11 +19,19 @@
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="3"/>
<RevisionNr Value="1"/>
<BuildNr Value="2193"/>
<BuildNr Value="2195"/>
<StringTable ProductVersion="0.3.1.2026"/>
</VersionInfo>
<MacroValues Count="1">
<Macro3 Name="LCLWidgetType" Value="gtk2"/>
</MacroValues>
<BuildModes Count="1">
<Item1 Name="default" Default="True"/>
<SharedMatrixOptions Count="3">
<Item1 ID="364409174580" Type="IDEMacro" MacroName="LCLWidgetType" Value="qt5"/>
<Item2 ID="890734883088" Type="IDEMacro" MacroName="LCLWidgetType" Value="gtk3"/>
<Item3 ID="102898540782" Modes="default" Type="IDEMacro" MacroName="LCLWidgetType" Value="gtk2"/>
</SharedMatrixOptions>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
@ -31,7 +39,7 @@
</PublishOptions>
<RunParams>
<local>
<CommandLineParams Value="--DEBUG=1"/>
<CommandLineParams Value="--DEBUG=0"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
<environment>
@ -44,7 +52,7 @@
<Modes Count="1">
<Mode0 Name="default">
<local>
<CommandLineParams Value="--DEBUG=1"/>
<CommandLineParams Value="--DEBUG=0"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
<environment>
@ -97,7 +105,7 @@
<MinVersion Major="1" Minor="2" Release="1" Valid="True"/>
</Item10>
</RequiredPackages>
<Units Count="104">
<Units Count="106">
<Unit0>
<Filename Value="cqrlog.lpr"/>
<IsPartOfProject Value="True"/>
@ -783,13 +791,21 @@
<Filename Value="uRotControl.pas"/>
<IsPartOfProject Value="True"/>
</Unit103>
<Unit104>
<Filename Value="aziloc.pas"/>
<IsPartOfProject Value="True"/>
</Unit104>
<Unit105>
<Filename Value="azidis3.pas"/>
<IsPartOfProject Value="True"/>
</Unit105>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<Libraries Value="$(LazarusDir)/lcl"/>
<OtherUnitFiles Value="lnet/lib;richmemo;richmemo/gtk2;synapse;richmemo/qt"/>
<OtherUnitFiles Value="lnet/lib;synapse"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
@ -803,7 +819,6 @@
</CodeGeneration>
<Linking>
<Debugging>
<GenerateDebugInfo Value="False"/>
<DebugInfoType Value="dsDwarf2Set"/>
</Debugging>
</Linking>

View File

@ -23,7 +23,7 @@ uses
fRadioMemories, fAddRadioMemory, fException, fCommentToCall,
fNewCommentToCall, fFindCommentToCall, frExportPref, fExportPref,
fWorkedGrids, fPropDK0WCY, fRemind, fContest, fMonWsjtx, fXfldigi,
dMembership, dSatellite, uRigControl, uRotControl;
dMembership, dSatellite, uRigControl, uRotControl, azidis3, aziloc;
var
Splash : TfrmSplash;

View File

@ -717,7 +717,7 @@ object dmData: TdmData
'#UNDEFINE'
)
Script.Strings = (
'create temporary table if not exists qslexport ('
'CREATE TEMPORARY TABLE IF NOT EXISTS qslexport ('
' id_qslexport INT AUTO_INCREMENT PRIMARY KEY,'
' idcall VARCHAR(20) DEFAULT '''','
' id_cqrlog_main INT NOT NULL,'
@ -742,7 +742,14 @@ object dmData: TdmData
' award VARCHAR(50) DEFAULT '''','
' remarks VARCHAR(200) DEFAULT '''','
' band VARCHAR(6) DEFAULT '''','
' qslmsg VARCHAR(20) DEFAULT '''''
' qslmsg VARCHAR(20) DEFAULT '''','
' prop_mode VARCHAR(30) DEFAULT '''','
' satellite VARCHAR(30) DEFAULT '''','
' contestname VARCHAR(40) DEFAULT '''','
' stx VARCHAR(6) DEFAULT '''','
' stx_string VARCHAR(50) DEFAULT '''','
' srx VARCHAR(6) DEFAULT '''','
' srx_string VARCHAR(50) DEFAULT '''''
');'
'CREATE INDEX idcall ON qslexport(idcall);'
'CREATE INDEX dxcc ON qslexport(dxcc);'

View File

@ -257,6 +257,7 @@ type
function LogExists(nr : Word) : Boolean;
function GetProperDBName(nr : Word) : String;
function GetQSOCount : Integer;
procedure GetQSODistanceSum(var SumDist:int64;var LongestDist:integer;var MainLocCount:Integer);
function UseseQSL(call : String) : Boolean;
function QueryLocate(qry : TSQLQuery; Column : String; Value : Variant; DisableGrid : Boolean; exatly : Boolean = True) : Boolean;
function BandModFromFreq(freq : String;var mode,band : String) : Boolean;
@ -1333,7 +1334,8 @@ begin
','+QuotedStr(qsl_r)+','+QuotedStr(qsl_via)+
','+QuotedStr(iota)+','+QuotedStr(pwr)+
','+sITU+','+sWAZ+
','+QuotedStr(loc)+','+QuotedStr(my_loc)+
//here we make final check that for now on locator writing format is by std in database
','+QuotedStr(dmUtils.StdFormatLocator(loc))+','+QuotedStr(dmUtils.StdFormatLocator(my_loc))+
//','+QuotedStr(dmUtils.MyTrim(county))+',' + QuotedStr(dmUtils.MyTrim(award)) + ','+QuotedStr(dmUtils.MyTrim(remarks))+
','+QuotedStr(trim(county))+',' + QuotedStr(trim(award)) + ','+QuotedStr(trim(remarks))+
','+IntToStr(adif)+','+ QuotedStr(idcall) + ','+ QuotedStr(state) +','+IntToStr(changed)+
@ -1903,6 +1905,15 @@ end;
function TdmData.QSLMgrFound(call,date : String; var qsl_via : String) : Boolean;
begin
// dmData.QSLMgrFound() needs date. if not set causes mysterious
// "'' is not valid date error" sometimes. (usually at first logged qso)
// So cheking both exist is needed.
if (call = '') or (date = '') then
Begin
Result := False;
Exit;
end;
qsl_via := '';
trQSLMgr.StartTransaction;
qQSLMgr.SQL.Text := 'select * from cqrlog_common.qslmgr where (callsign = '+QuotedStr(call)+
@ -2458,7 +2469,79 @@ begin
if call = eQSLUsers[i] then
Result := True
end;
procedure TdmData.GetQSODistanceSum(var SumDist:int64; var LongestDist:integer;var MainLocCount:Integer);
var
qrb,
qrc,
Myloc,
loc :String;
procedure HandleRecord;
Begin
Myloc := Q.Fields[0].AsString;
if length(Myloc) = 4 then Myloc := Myloc +'LL';
loc := Q.Fields[1].AsString;
if length(loc) = 4 then loc := loc +'LL';
dmUtils.DistanceFromLocator(Myloc,loc,qrb,qrc);
if StrToIntDef(qrb,0) > LongestDist then LongestDist := StrToIntDef(qrb,0);
SumDist:= SumDist + StrToIntDef(qrb,0);
end;
begin
SumDist :=0;
LongestDist :=0;
MainLocCount := 0;
Q.Close;
if trQ.Active then
trQ.RollBack;
if IsFilter then
begin
Q.SQL.Text := StringReplace(dmData.qCQRLOG.SQL.Text,'*','my_loc,loc',[]);
trQ.StartTransaction;
try
Q.Open;
while not Q.Eof do
begin
HandleRecord;
Q.Next;
end
finally
Q.Close;
trQ.RollBack
end
end
else begin
Q.SQL.Text := 'SELECT my_loc,loc FROM cqrlog_main';
trQ.StartTransaction;
try
Q.Open;
while not Q.Eof do
begin
HandleRecord;
Q.Next;
end
finally
Q.Close;
trQ.RollBack
end
end;
if pos('WHERE', Q.SQL.Text) > 0 then
Q.SQL.Text := 'SELECT COUNT(DISTINCT(LEFT(loc,4))) FROM cqrlog_main WHERE left(loc,4) <> "" AND '
+ copy(Q.SQL.Text, pos('WHERE', Q.SQL.Text)+5, length(Q.SQL.Text))
else
Q.SQL.Text := 'SELECT COUNT(DISTINCT(LEFT(loc,4))) FROM cqrlog_main WHERE left(loc,4) <> "" ';
trQ.StartTransaction;
try
Q.Open;
MainLocCount := Q.Fields[0].AsInteger
finally
Q.Close;
trQ.RollBack
end
end;
function TdmData.GetQSOCount : Integer;
begin
Q.Close;
@ -3104,7 +3187,7 @@ begin
Q.SQL.Add(scQSLExport.Script.Strings[i])
else begin
Q.SQL.Add(scQSLExport.Script.Strings[i]);
if fDebugLevel>=1 then Writeln(mQ.SQL.Text);
if fDebugLevel>=1 then Writeln(Q.SQL.Text);
Q.ExecSQL;
Q.SQL.Text := ''
end

View File

@ -264,7 +264,7 @@ type
function MyStrToDateTime(DateTime : String) : TDateTime;
function MyDateTimeToStr(DateTime : TDateTime) : String;
function LoadVisibleColumnsConfiguration : TColumnVisibleArray;
function StdFormatLocator(loc:string):String;
end;
var
@ -1046,6 +1046,18 @@ begin
else
Result := False;
end;
function TdmUtils.StdFormatLocator(loc:string):String;
// Format locator to standard form BL11bh16 See:
// https://en.wikipedia.org/wiki/Maidenhead_Locator_System#Description_of_the_system
// Check TEdit CharCase to be ecNormal, othewise you get runtime error!
var
s :String;
begin
if loc = '' then exit;
s := Upcase(copy(loc,1,4));
s:= s + lowercase(copy(loc,5,6)); //max loc length 10 in database
Result := trim(s);
end;
procedure TdmUtils.GetCoordinate(pfx: string; var latitude, longitude: currency);
var

View File

@ -242,7 +242,7 @@ function TfrmAdifImport.fillTypeVariableWithTagData(h:longint;var data:string;va
h_EQSL_QSL_RCVD:d.EQSL_QSL_RCVD:=data;
h_EQSL_QSL_SENT:d.EQSL_QSL_SENT:=data;
h_FREQ:d.FREQ:=data;
h_GRIDSQUARE:d.GRIDSQUARE:=data;
h_GRIDSQUARE:d.GRIDSQUARE:=dmUtils.StdFormatLocator(data);
h_IOTA:d.IOTA:=data;
h_ITUZ:d.ITUZ:=data;
h_LOTW_QSLRDATE:d.LOTW_QSLRDATE:=data;
@ -250,7 +250,7 @@ function TfrmAdifImport.fillTypeVariableWithTagData(h:longint;var data:string;va
h_LOTW_QSL_RCVD:d.LOTW_QSL_RCVD:=data;
h_LOTW_QSL_SENT:d.LOTW_QSL_SENT:=data;
h_MODE:d.MODE:=data;
h_MY_GRIDSQUARE:d.MY_GRIDSQUARE:=data;
h_MY_GRIDSQUARE:d.MY_GRIDSQUARE:=dmUtils.StdFormatLocator(data);
h_NAME:d.NAME:=data;
h_NOTES:d.NOTES:=data;
h_PFX:d.PFX:=data;

View File

@ -14,12 +14,12 @@ object frmChangeLocator: TfrmChangeLocator
ClientHeight = 108
ClientWidth = 236
Position = poMainFormCenter
LCLVersion = '1.8.2.0'
LCLVersion = '2.0.2.0'
object lblEnterLocator: TLabel
Left = 8
Height = 17
Top = 8
Width = 125
Width = 120
Caption = 'Enter your locator:'
ParentColor = False
end
@ -27,11 +27,11 @@ object frmChangeLocator: TfrmChangeLocator
AnchorSideTop.Control = lblEnterLocator
AnchorSideTop.Side = asrBottom
Left = 8
Height = 27
Height = 34
Top = 27
Width = 216
BorderSpacing.Top = 2
CharCase = ecUppercase
OnChange = edtLocatorChange
OnKeyPress = edtLocatorKeyPress
TabOrder = 0
end
@ -39,8 +39,8 @@ object frmChangeLocator: TfrmChangeLocator
AnchorSideTop.Control = edtLocator
AnchorSideTop.Side = asrBottom
Left = 8
Height = 37
Top = 64
Height = 41
Top = 71
Width = 64
AutoSize = True
BorderSpacing.Top = 10
@ -54,9 +54,9 @@ object frmChangeLocator: TfrmChangeLocator
AnchorSideTop.Control = edtLocator
AnchorSideTop.Side = asrBottom
Left = 160
Height = 37
Top = 64
Width = 64
Height = 41
Top = 71
Width = 68
AutoSize = True
BorderSpacing.Top = 10
BorderSpacing.InnerBorder = 4

View File

@ -18,12 +18,13 @@ type
edtLocator: TEdit;
lblEnterLocator: TLabel;
procedure btnOKClick(Sender: TObject);
procedure edtLocatorChange(Sender: TObject);
procedure edtLocatorKeyPress(Sender: TObject; var Key: char);
private
{ private declarations }
public
{ public declarations }
end;
end;
var
frmChangeLocator: TfrmChangeLocator;
@ -32,6 +33,7 @@ implementation
{$R *.lfm}
{ TfrmChangeLocator }
uses dUtils;
procedure TfrmChangeLocator.edtLocatorKeyPress(Sender: TObject; var Key: char);
begin
@ -47,5 +49,11 @@ begin
ModalResult := mrOK
end;
procedure TfrmChangeLocator.edtLocatorChange(Sender: TObject);
begin
edtLocator.Text := dmUtils.StdFormatLocator(edtLocator.Text);
edtLocator.SelStart := Length(edtLocator.Text);
end;
end.

View File

@ -13,7 +13,7 @@ object frmContest: TfrmContest
OnHide = FormHide
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '2.0.0.4'
LCLVersion = '2.0.4.0'
object edtCall: TEdit
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = lblCall
@ -124,8 +124,8 @@ object frmContest: TfrmContest
Hint = 'contest exchange message sent, max 50 characters'
Top = 53
Width = 100
CharCase = ecUppercase
MaxLength = 50
OnChange = edtSRX2Change
OnKeyDown = edtCallKeyDown
ParentShowHint = False
ShowHint = True
@ -323,16 +323,16 @@ object frmContest: TfrmContest
Left = 17
Height = 17
Top = 1
Width = 87
Width = 91
BorderSpacing.Left = 17
Caption = 'Contestname'
Caption = 'Contest name'
ParentColor = False
end
object cmbContestName: TComboBox
AnchorSideLeft.Control = lblContestName
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 110
Left = 114
Height = 34
Hint = 'contestname, choose ADIF contest_id via combobox or type freestyle max 40 characters'
Top = 1

View File

@ -46,6 +46,7 @@ type
procedure edtCallExit(Sender: TObject);
procedure edtCallKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
procedure edtCallKeyPress(Sender: TObject; var Key: char);
procedure edtSRX2Change(Sender: TObject);
procedure edtSRXExit(Sender: TObject);
procedure edtSTX_strExit(Sender: TObject);
procedure edtSTXExit(Sender: TObject);
@ -316,6 +317,14 @@ begin
key := #0;
end;
procedure TfrmContest.edtSRX2Change(Sender: TObject);
begin
if chLoc.Checked then
begin
edtSRX2.Text := dmUtils.StdFormatLocator(edtSRX2.Text);
edtSRX2.SelStart := Length(edtSRX2.Text);
end;
end;
procedure TfrmContest.edtSRXExit(Sender: TObject);
begin
ChkSerialNrUpd(False); //just save it

View File

@ -1,7 +1,7 @@
object frmExLabelPrint: TfrmExLabelPrint
Left = 25
Left = 709
Height = 522
Top = 101
Top = 11
Width = 424
HelpType = htKeyword
HelpKeyword = 'help/h22.html#bh4'
@ -14,7 +14,7 @@ object frmExLabelPrint: TfrmExLabelPrint
OnClose = FormClose
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.0.2.0'
LCLVersion = '2.0.4.0'
object Label1: TLabel
AnchorSideLeft.Control = gchkExport
AnchorSideTop.Control = edtQSOsToLabel

View File

@ -62,7 +62,7 @@ var
implementation
{$R *.lfm}
uses dUtils, dData, uMyIni, fQSLExpPref, dDXCC;
uses dUtils, dData, uMyIni, fQSLExpPref, dDXCC,fMain;
{ TfrmExLabelPrint }
procedure TfrmExLabelPrint.edtQSOsToLabelExit(Sender: TObject);
@ -117,6 +117,12 @@ begin
inc(Result);
if cqrini.ReadBool('QSLExport', 'band', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'Propagation', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'Satellite', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'ContestName', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'QSL_S', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'QSL_R', True) then
@ -136,7 +142,15 @@ begin
if cqrini.ReadBool('QSLExport', 'Remarks', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'QSLMsg', True) then
inc(Result)
inc(Result);
if cqrini.ReadBool('QSLExport', 'ContestNrS', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'ContestMsgS', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'ContestNrR', True) then
inc(Result);
if cqrini.ReadBool('QSLExport', 'ContestMsgR', True) then
inc(Result);
end;
function TfrmExLabelPrint.Rep(what : String) : String;
@ -156,13 +170,16 @@ begin
dmData.trQ.StartTransaction;
dmData.Q.Close;
dmData.Q.SQL.Text := 'insert into qslexport (idcall,id_cqrlog_main,dxcc,qsodate,time_on,time_off,callsign,freq,mode,rst_s,rst_r, '+
'name,qth,qsl_s,qsl_r,qsl_via,iota,pwr,loc,my_loc,award,remarks,band,qslmsg) values('+
'name,qth,qsl_s,qsl_r,qsl_via,iota,pwr,loc,my_loc,award,remarks,band,qslmsg,prop_mode,satellite,'+
'contestname,stx,stx_string,srx,srx_string) values('+
':idcall,:id_cqrlog_main,:dxcc,:qsodate,:time_on,:time_off,:callsign,:freq,:mode,:rst_s,:rst_r,:name,'+
':qth,:qsl_s,:qsl_r,:qsl_via,:iota,:pwr,:loc,:my_loc,:award,:remarks,:band,:qslmsg)';
':qth,:qsl_s,:qsl_r,:qsl_via,:iota,:pwr,:loc,:my_loc,:award,:remarks,:band,:qslmsg,:prop_mode,:satellite,'+
':contestname,:stx,:stx_string,:srx,:srx_string)';
if dmData.DebugLevel>=1 then Writeln(dmData.Q.SQL.Text);
dmData.qCQRLOG.First;
while not dmData.qCQRLOG.Eof do
begin
DoExp := False;
if chkAllQSOs.Checked then
DoExp := True
@ -178,11 +195,13 @@ begin
if (dmData.qCQRLOG.Fields[11].AsString = 'SMB') and (gchkExport.Checked[4]) then
DoExp := True
end;
if (not DoExp) or (dmData.qCQRLOG.FieldByName('band').AsString='') then
begin
dmData.qCQRLOG.Next;
Continue
end;
dmData.Q.Prepare;
dmData.Q.ParamByName('id_cqrlog_main').AsInteger := dmData.qCQRLOG.FieldByName('id_cqrlog_main').AsInteger;
@ -239,14 +258,21 @@ begin
dmData.Q.ParamByName('award').AsString := Rep(dmData.qCQRLOG.FieldByName('award').AsString);
dmData.Q.ParamByName('band').AsString := dmData.qCQRLOG.FieldByName('band').AsString;
dmData.Q.ParamByName('qslmsg').AsString := Rep(qsl_msg);
dmData.Q.ParamByName('prop_mode').AsString := dmData.qCQRLOG.FieldByName('prop_mode').AsString;
dmData.Q.ParamByName('satellite').AsString := dmData.qCQRLOG.FieldByName('satellite').AsString;
dmData.Q.ParamByName('contestname').AsString := dmData.qCQRLOG.FieldByName('contestname').AsString;
dmData.Q.ParamByName('stx').AsString := dmData.qCQRLOG.FieldByName('stx').AsString;
dmData.Q.ParamByName('stx_string').AsString := dmData.qCQRLOG.FieldByName('stx_string').AsString;
dmData.Q.ParamByName('srx').AsString := dmData.qCQRLOG.FieldByName('srx').AsString;
dmData.Q.ParamByName('srx_string').AsString := dmData.qCQRLOG.FieldByName('srx_string').AsString;
dmData.Q.ExecSQL;
dmData.qCQRLOG.Next
end
finally
dmData.trQ.Commit;
dmData.qCQRLOG.EnableControls
end
end;
end;
procedure TfrmExLabelPrint.btnExportClick(Sender: TObject);
@ -312,6 +338,7 @@ var
Write(f,dmData.Q.FieldByName('mode').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'Freq', True) then
Write(f,FloatToStr(dmData.Q.FieldByName('freq').AsFloat),C_SEP);
if cqrini.ReadBool('QSLExport', 'RST_S', True) then
begin
if not cqrini.ReadBool('QSLExport','SplitRST_S',False) then
@ -344,6 +371,12 @@ var
Write(f,dmData.Q.FieldByName('qth').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'band', True) then
Write(f,dmData.Q.FieldByName('band').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'Propagation', True) then
Write(f,dmData.Q.FieldByName('prop_mode').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'Satellite', True) then
Write(f,dmData.Q.FieldByName('satellite').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'ContestName', True) then
Write(f, dmData.Q.FieldByName('contestname').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'QSL_S', True) then
Write(f,dmData.Q.FieldByName('qsl_s').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'QSL_R', True) then
@ -354,6 +387,8 @@ var
Write(f,dmData.Q.FieldByName('loc').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'MyLoc', True) then
Write(f,dmData.Q.FieldByName('my_loc').AsString,C_SEP);
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);
if cqrini.ReadBool('QSLExport', 'IOTA', True) then
Write(f,dmData.Q.FieldByName('iota').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'award', True) then
@ -363,7 +398,16 @@ var
if cqrini.ReadBool('QSLExport', 'Remarks', True) then
Write(f,dmData.Q.FieldByName('remarks').AsString,C_SEP);
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);
if cqrini.ReadBool('QSLExport', 'ContestNrS', True) then
Write(f,dmData.Q.FieldByName('stx').AsString ,C_SEP);
if cqrini.ReadBool('QSLExport', 'ContestMsgS', True) then
Write(f,dmData.Q.FieldByName('stx_string').AsString,C_SEP);
if cqrini.ReadBool('QSLExport', 'ContestNrR', True) then
Write(f,dmData.Q.FieldByName('srx').AsString ,C_SEP);
if cqrini.ReadBool('QSLExport', 'ContestMsgR', True) then
Write(f,dmData.Q.FieldByName('srx_string').AsString ,C_SEP);
end;
begin
@ -384,6 +428,7 @@ begin
end;
FieldCount := GetExpFieldCount;
if dmData.DebugLevel >= 1 then Writeln('Field count: ', FieldCount);
dmData.CreateQSLTmpTable;
LoadDataToTempDB;
// FieldCount := GetExpFieldCount;
@ -396,6 +441,7 @@ begin
dmData.trQ1.StartTransaction;
dmData.Q.SQL.Text := 'select * from qslexport order by dxcc,idcall';
dmData.Q.Open;
while not dmData.Q.Eof do
begin
if chkMarkSent.Checked then

View File

@ -1,55 +1,70 @@
object frmExportPref: TfrmExportPref
Left = 491
Height = 495
Top = 32
Width = 737
Left = 232
Height = 502
Top = 131
Width = 931
BorderStyle = bsDialog
Caption = 'Choose fields to export'
ClientHeight = 495
ClientWidth = 737
ClientHeight = 502
ClientWidth = 931
OnShow = FormShow
Position = poOwnerFormCenter
LCLVersion = '2.0.2.0'
inline fraExportPref1: TfraExportPref
Left = 8
Top = 8
inherited chkexCounty: TCheckBox
Top = 217
end
inherited chkexRemarks: TCheckBox
Left = 176
OnChange = nil
end
inherited chkexContest: TCheckBox
Left = 176
end
end
LCLVersion = '2.0.4.0'
object btnOK: TButton
Left = 640
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 844
Height = 25
Top = 16
Top = 36
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 36
BorderSpacing.Right = 12
Caption = 'OK'
OnClick = btnOKClick
TabOrder = 1
TabOrder = 0
end
object btnCancel: TButton
Left = 640
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnOK
AnchorSideTop.Side = asrBottom
Left = 844
Height = 25
Top = 56
Top = 73
Width = 75
BorderSpacing.Top = 12
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
TabOrder = 1
end
object btnReSet: TButton
Left = 640
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnCancel
AnchorSideTop.Side = asrBottom
Left = 844
Height = 25
Top = 96
Top = 110
Width = 75
BorderSpacing.Top = 12
Caption = 'Re/Set All'
OnClick = btnReSetClick
TabOrder = 2
end
inline fraExportPref1: TfraExportPref
Left = 8
Top = 8
TabOrder = 3
DesignLeft = 1719
DesignTop = 168
inherited lblField1: TLabel
AnchorSideLeft.Control = fraExportPref1
AnchorSideTop.Control = fraExportPref1
end
inherited chkAutoColumn: TCheckBox
OnChange = chkAutoColumnChange
end
end
end

View File

@ -17,16 +17,17 @@ type
btnCancel : TButton;
btnReSet: TButton;
CheckBox1: TCheckBox;
fraExportPref1 : TfraExportPref;
fraExportPref1: TfraExportPref;
procedure btnOKClick(Sender : TObject);
procedure btnReSetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure chkAutoColumnChange(Sender: TObject);
procedure FormShow(Sender : TObject);
procedure fraExportPref1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
Procedure HideWidths(Hid:Boolean);
Procedure HideAll(Hid:Boolean);
end;
var
@ -36,19 +37,36 @@ var
implementation
{$R *.lfm}
uses dUtils;
uses dUtils,fMain;
{ TfrmExportPref }
Procedure TfrmExportPref.HideAll(Hid:Boolean);
var i : integer;
Begin
for i := 0 to fraExportPref1.ComponentCount - 1 do
if fraExportPref1.Components[i] is TEdit then
tedit(fraExportPref1.Components[i]).Visible := not Hid;
end;
Procedure TfrmExportPref.HideWidths(Hid:Boolean);
var i : integer;
Begin
for i := 0 to fraExportPref1.ComponentCount - 1 do
if fraExportPref1.Components[i] is TEdit then
if (StrToIntDef(tedit(fraExportPref1.Components[i]).Text,-1) > -1 ) then
tedit(fraExportPref1.Components[i]).Visible := not Hid;
end;
procedure TfrmExportPref.FormShow(Sender : TObject);
begin
dmUtils.LoadFontSettings(frmExportPref);
fraExportPref1.LoadExportPref
end;
procedure TfrmExportPref.fraExportPref1Click(Sender: TObject);
begin
fraExportPref1.LoadExportPref;
if not frmMain.ShowWidths then //this is ADIF export case
Begin
HideAll(True);
fraExportPref1.chkAutoColumn.Visible := False;
end
else if fraExportPref1.chkAutoColumn.Checked = True then // HTML export but auto column checked
HideWidths(true);
end;
procedure TfrmExportPref.btnOKClick(Sender : TObject);
@ -66,10 +84,17 @@ begin
AllChk := not AllChk;
end;
procedure TfrmExportPref.FormCreate(Sender: TObject);
procedure TfrmExportPref.chkAutoColumnChange(Sender: TObject);
begin
if frmMain.ShowWidths then // only in HTML export
Begin
if fraExportPref1.chkAutoColumn.Checked = True then
HideWidths(True)
else
HideWidths(False);
end;
end;
end.

View File

@ -145,7 +145,7 @@ object frmExportProgress: TfrmExportProgress
}
OnCreate = FormCreate
OnShow = FormShow
LCLVersion = '1.8.0.6'
LCLVersion = '2.0.4.0'
object lblComment: TLabel
Left = 0
Height = 17
@ -168,6 +168,6 @@ object frmExportProgress: TfrmExportProgress
Enabled = False
OnTimer = tmrExportTimer
left = 23
top = 28
top = 32
end
end

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
object frmFilter: TfrmFilter
Left = -187
Left = 0
Height = 658
Top = 162
Top = 115
Width = 817
HelpType = htKeyword
HelpKeyword = 'help/h23.html#ah22'
@ -488,7 +488,7 @@ object frmFilter: TfrmFilter
Width = 95
BorderSpacing.Left = 8
BorderSpacing.Top = 6
CharCase = ecUppercase
OnChange = edtLocatorChange
TabOrder = 0
end
object rbIncludeLoc: TRadioButton
@ -1044,7 +1044,7 @@ object frmFilter: TfrmFilter
Width = 95
BorderSpacing.Left = 8
BorderSpacing.Top = 6
CharCase = ecUppercase
OnChange = edtMyLocChange
TabOrder = 0
end
object rbIncludeMyLoc: TRadioButton

View File

@ -143,6 +143,8 @@ type
procedure btnSelectDXCCClick(Sender: TObject);
procedure chkRememberChange(Sender: TObject);
procedure cmbBandSelectorChange(Sender: TObject);
procedure edtLocatorChange(Sender: TObject);
procedure edtMyLocChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormShow(Sender: TObject);
@ -624,6 +626,24 @@ begin
end;
procedure TfrmFilter.edtLocatorChange(Sender: TObject);
begin
if rbExactlyLoc.Checked then
Begin
edtLocator.Text:=dmUtils.StdFormatLocator(edtLocator.Text);
edtLocator.SelStart := Length(edtLocator.Text);
end;
end;
procedure TfrmFilter.edtMyLocChange(Sender: TObject);
begin
if rbExactlyMyLoc.Checked then
Begin
edtMyLoc.Text:=dmUtils.StdFormatLocator(edtMyLoc.Text);
edtMyLoc.SelStart := Length(edtMyLoc.Text);
end;
end;
procedure TfrmFilter.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin

View File

@ -234,6 +234,7 @@ object frmGroupEdit: TfrmGroupEdit
Top = 34
Width = 312
ItemHeight = 0
OnChange = cmbValueChange
TabOrder = 1
end
end

View File

@ -35,6 +35,7 @@ type
Panel1: TPanel;
procedure btnApplyClick(Sender: TObject);
procedure cmbFieldChange(Sender: TObject);
procedure cmbValueChange(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
@ -100,6 +101,16 @@ begin
end;
end
end;
procedure TfrmGroupEdit.cmbValueChange(Sender: TObject);
begin
if (cmbField.ItemIndex=23) or (cmbField.ItemIndex=24) then
begin
cmbValue.Text :=dmUtils.StdFormatLocator(cmbValue.Text);
cmbValue.SelStart := Length(cmbValue.Text);
end;
end;
{eQSL sent 28
eQSL sent date 29
eQSL rcvd 30
@ -371,7 +382,7 @@ begin
exit
end
end;
sql := 'my_loc='+QuotedStr(UpperCase(cmbValue.Text))
sql := 'my_loc='+QuotedStr(cmbValue.Text)
end;
24 : begin
if (cmbValue.Text <> '') then
@ -391,7 +402,7 @@ begin
exit
end
end;
sql := 'loc='+QuotedStr(UpperCase(cmbValue.Text))
sql := 'loc='+QuotedStr(cmbValue.Text)
end;
25 : begin
sql := 'profile=' + IntToStr(dmData.GetNRFromProfile(cmbValue.Text))

View File

@ -1,17 +1,17 @@
object frmMain: TfrmMain
Left = 266
Height = 626
Top = 52
Width = 874
Left = -14
Height = 669
Top = 498
Width = 986
HelpType = htKeyword
HelpKeyword = 'help/index.html'
HorzScrollBar.Page = 672
VertScrollBar.Page = 248
VertScrollBar.Page = 272
ActiveControl = Panel2
AutoScroll = True
Caption = 'CQRLOG for Linux'
ClientHeight = 601
ClientWidth = 874
ClientHeight = 644
ClientWidth = 986
Constraints.MinHeight = 148
Constraints.MinWidth = 536
Icon.Data = {
@ -159,14 +159,14 @@ object frmMain: TfrmMain
OnCreate = FormCreate
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '2.0.2.0'
LCLVersion = '2.0.4.0'
object sbMain: TStatusBar
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 19
Top = 582
Width = 874
Top = 625
Width = 986
Panels = <
item
Text = 'QSO:'
@ -192,12 +192,12 @@ object frmMain: TfrmMain
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 40
Top = 536
Width = 874
Top = 579
Width = 986
Align = alBottom
BorderSpacing.Bottom = 6
ClientHeight = 40
ClientWidth = 874
ClientWidth = 986
ParentColor = False
TabOrder = 0
OnClick = pnlButtonsClick
@ -234,7 +234,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = btnNewQSO
AnchorSideRight.Control = pnlButtons
AnchorSideRight.Side = asrBottom
Left = 734
Left = 846
Height = 33
Top = 5
Width = 130
@ -249,7 +249,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = btnNewQSO
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = btnClose
Left = 594
Left = 706
Height = 33
Top = 5
Width = 130
@ -264,7 +264,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = btnNewQSO
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = btnDeleteQSO
Left = 454
Left = 566
Height = 33
Top = 5
Width = 130
@ -295,14 +295,14 @@ object frmMain: TfrmMain
Left = 0
Height = 38
Top = 31
Width = 874
Width = 986
Align = alTop
AutoSize = True
BorderSpacing.Top = 5
BorderSpacing.InnerBorder = 5
BevelOuter = bvNone
ClientHeight = 38
ClientWidth = 874
ClientWidth = 986
TabOrder = 1
object lblQSOInLog: TLabel
AnchorSideLeft.Control = Panel2
@ -342,7 +342,7 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = Panel2
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = lblQSOInLog
Left = 417
Left = 473
Height = 17
Top = 11
Width = 40
@ -356,7 +356,7 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblDXCCWorked
AnchorSideBottom.Side = asrBottom
Left = 467
Left = 523
Height = 17
Top = 11
Width = 27
@ -371,7 +371,7 @@ object frmMain: TfrmMain
object lblDXCCConfirmed: TLabel
AnchorSideTop.Control = lblQSOInLog
AnchorSideRight.Control = lblDXCCCmf
Left = 728
Left = 840
Height = 17
Top = 11
Width = 73
@ -389,7 +389,7 @@ object frmMain: TfrmMain
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = lblDXCCConfirmed
AnchorSideBottom.Side = asrBottom
Left = 811
Left = 923
Height = 17
Top = 11
Width = 53
@ -408,9 +408,9 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 403
Height = 422
Top = 69
Width = 874
Width = 986
Align = alClient
Color = clWindow
Columns = <>
@ -430,7 +430,7 @@ object frmMain: TfrmMain
Left = 0
Height = 26
Top = 0
Width = 874
Width = 986
BorderWidth = 4
EdgeOuter = esRaised
Flat = False
@ -712,13 +712,13 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 64
Top = 472
Width = 874
Height = 88
Top = 491
Width = 986
Align = alBottom
BevelOuter = bvNone
ClientHeight = 64
ClientWidth = 874
ClientHeight = 88
ClientWidth = 986
TabOrder = 5
object lblCommentForQSO: TLabel
AnchorSideLeft.Control = pnlDetails
@ -753,12 +753,12 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblCommentForQSO
AnchorSideBottom.Side = asrBottom
Left = 142
Left = 138
Height = 17
Top = 10
Width = 85
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 10
BorderSpacing.Left = 6
Layout = tlBottom
ParentColor = False
end
@ -777,23 +777,22 @@ object frmMain: TfrmMain
ParentColor = False
end
object Panel1: TPanel
Left = 444
Height = 64
Left = 566
Height = 62
Top = 0
Width = 186
Width = 210
Align = alRight
BevelOuter = bvNone
ClientHeight = 64
ClientWidth = 186
ClientHeight = 62
ClientWidth = 210
TabOrder = 0
object lblQSLSDate: TLabel
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
Left = 7
Left = 0
Height = 17
Top = 10
Width = 70
BorderSpacing.Left = 7
BorderSpacing.Top = 10
Caption = 'QS_S date:'
Layout = tlBottom
@ -805,12 +804,12 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblQSLSDate
AnchorSideBottom.Side = asrBottom
Left = 89
Left = 76
Height = 17
Top = 10
Width = 85
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 12
BorderSpacing.Left = 6
Layout = tlBottom
ParentColor = False
end
@ -819,12 +818,12 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblQSLRDate
AnchorSideBottom.Side = asrBottom
Left = 90
Left = 77
Height = 17
Top = 37
Width = 86
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 12
BorderSpacing.Left = 6
Layout = tlBottom
ParentColor = False
end
@ -832,7 +831,7 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = lblQSLSDate
AnchorSideTop.Control = lblQSLSDate
AnchorSideTop.Side = asrBottom
Left = 7
Left = 0
Height = 17
Top = 37
Width = 71
@ -844,23 +843,22 @@ object frmMain: TfrmMain
end
end
object Panel3: TPanel
Left = 630
Height = 64
Left = 776
Height = 62
Top = 0
Width = 244
Width = 210
Align = alRight
BevelOuter = bvNone
ClientHeight = 64
ClientWidth = 244
ClientHeight = 62
ClientWidth = 210
TabOrder = 1
object lblLoTWQSLSDate: TLabel
AnchorSideLeft.Control = Panel3
AnchorSideTop.Control = Panel3
Left = 7
Left = 0
Height = 17
Top = 10
Width = 110
BorderSpacing.Left = 7
BorderSpacing.Top = 10
Caption = 'LoTW QS_S date:'
Layout = tlBottom
@ -872,12 +870,12 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblLoTWQSLSDate
AnchorSideBottom.Side = asrBottom
Left = 134
Left = 116
Height = 17
Top = 10
Width = 90
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 17
BorderSpacing.Left = 6
Layout = tlBottom
ParentColor = False
end
@ -887,20 +885,21 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrCenter
AnchorSideBottom.Control = lblLoTWQSLRDate
AnchorSideBottom.Side = asrBottom
Left = 135
Left = 117
Height = 17
Top = 37
Width = 91
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 17
BorderSpacing.Left = 6
BorderSpacing.Top = 10
Layout = tlBottom
ParentColor = False
end
object lblLoTWQSLRDate: TLabel
AnchorSideLeft.Control = lblLoTWQSLSDate
AnchorSideTop.Control = lblLoTWQSLSDate
AnchorSideTop.Side = asrBottom
Left = 7
Left = 0
Height = 17
Top = 37
Width = 111
@ -911,6 +910,100 @@ object frmMain: TfrmMain
ParentFont = False
end
end
object pnlDistance: TPanel
Left = 0
Height = 26
Top = 62
Width = 986
Align = alBottom
ClientHeight = 26
ClientWidth = 986
TabOrder = 2
Visible = False
object lblDistance: TLabel
AnchorSideLeft.Control = pnlDistance
AnchorSideTop.Control = pnlDistance
AnchorSideTop.Side = asrCenter
Left = 11
Height = 17
Top = 5
Width = 61
BorderSpacing.Left = 10
Caption = 'Distance:'
ParentColor = False
Visible = False
end
object lblDist: TLabel
AnchorSideLeft.Control = lblDistance
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblDistance
AnchorSideTop.Side = asrCenter
AnchorSideBottom.Side = asrBottom
Left = 78
Height = 17
Top = 5
Width = 42
BorderSpacing.Left = 6
Caption = 'lblDist'
ParentColor = False
end
object lblLongest: TLabel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblDistance
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = pnlDistance
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 908
Height = 17
Top = 5
Width = 67
Anchors = [akTop, akRight]
BorderSpacing.Right = 10
Caption = 'lblLongest'
ParentColor = False
end
object lblLongestDist: TLabel
AnchorSideTop.Control = lblDistance
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = lblLongest
Left = 815
Height = 17
Top = 5
Width = 87
Anchors = [akTop, akRight]
BorderSpacing.Right = 6
Caption = 'Longest QSO:'
ParentColor = False
end
object lblSumDistances: TLabel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = lblDistance
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = lblSumDist
Left = 354
Height = 17
Top = 5
Width = 94
Anchors = [akTop, akRight]
BorderSpacing.Right = 6
Caption = 'Total distance:'
ParentColor = False
end
object lblSumDist: TLabel
AnchorSideLeft.Control = pnlDistance
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = lblDistance
AnchorSideTop.Side = asrCenter
AnchorSideBottom.Side = asrBottom
Left = 454
Height = 17
Top = 5
Width = 79
Caption = 'lblSumDist '
ParentColor = False
end
end
end
object mnuMain: TMainMenu
Images = imgMain1

View File

@ -18,7 +18,7 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Menus,
ActnList, ExtCtrls, StdCtrls, ComCtrls, DBGrids, Buttons, LCLType, IniFiles, process,
Grids, DBCtrls, dLogUpload;
Grids, DBCtrls, dLogUpload,db;
type
@ -112,6 +112,10 @@ type
Image1: TImage;
imgMain: TImageList;
imgMain1: TImageList;
lblDist: TLabel;
lblDistance: TLabel;
lblLongest: TLabel;
lblLongestDist: TLabel;
lblQSOInLog: TLabel;
lblDXCCWorked: TLabel;
lblCommentForQSO: TLabel;
@ -124,6 +128,8 @@ type
lblDXCCCmf: TLabel;
lblDXCC: TLabel;
lblQSOCount: TLabel;
lblSumDist: TLabel;
lblSumDistances: TLabel;
MenuItem1: TMenuItem;
MenuItem10: TMenuItem;
MenuItem100: TMenuItem;
@ -263,6 +269,7 @@ type
dlgOpen: TOpenDialog;
Panel1: TPanel;
Panel3: TPanel;
pnlDistance: TPanel;
pnlDetails: TPanel;
pnlButtons: TPanel;
Panel2: TPanel;
@ -423,16 +430,17 @@ type
private
InRefresh : Boolean;
WhatUpNext : TWhereToUpload;
DistColumnIndex :integer;
procedure ChechkSelRecords;
{ private declarations }
public
ShowWidths : Boolean;
procedure RefreshQSODXCCCount;
procedure MarkQSLSend(symbol: string);
procedure ShowFields;
procedure ReloadGrid;
procedure CheckAttachment;
function CalcQrb(Myloc,loc:string;showUnits:boolean):string;
{ public declarations }
end;
@ -449,7 +457,7 @@ uses fNewQSO, fPreferences, dUtils, dData, dDXCC, dDXCluster, fMarkQSL, fDXCCSta
fQSODetails, fWAZITUStat, fIOTAStat, fDatabaseUpdate, fExLabelPrint,
fImportLoTWWeb, fLoTWExport, fGroupEdit, fCustomStat, fSQLConsole, fCallAttachment,
fEditDetails, fQSLViewer, uMyIni, fRebuildMembStat, fAbout, fBigSquareStat,
feQSLUpload, feQSLDownload, fSOTAExport, fRotControl, fLogUploadStatus, fExportPref;
feQSLUpload, feQSLDownload, fSOTAExport, fRotControl, fLogUploadStatus, fExportPref,uVersion;
procedure TfrmMain.ReloadGrid;
begin
@ -458,10 +466,30 @@ begin
end;
procedure TfrmMain.RefreshQSODXCCCount;
var
SumDist: int64;
Longest,
MainLocCount : integer;
qrb,
qrc,
Myloc,
loc : String;
begin
lblQSOCount.Caption := IntToStr(dmData.GetQSOCount);
lblDXCC.Caption := IntToStr(dmDXCC.DXCCCount);
lblDXCCCmf.Caption := IntToStr(dmDXCC.DXCCCmfCount)
lblDXCCCmf.Caption := IntToStr(dmDXCC.DXCCCmfCount);
if pnlDistance.Visible then
Begin
dmData.GetQSODistanceSum(SumDist,Longest,MainLocCount);
if cqrini.ReadBool('Program','ShowMiles',False) then
lblSumDist.Caption := FloatToStr(dmUtils.KmToMiles(SumDist)) + 'mi'
else
lblSumDist.Caption := IntToStr(SumDist) + 'km';
if cqrini.ReadBool('Program','ShowMiles',False) then
lblLongest.Caption := FloatToStr(dmUtils.KmToMiles(Longest)) + 'mi'
else
lblLongest.Caption := IntToStr(Longest) + 'km';
end;
end;
procedure TfrmMain.acPreferencesExecute(Sender: TObject);
@ -604,8 +632,9 @@ var
begin
tmp := '';
sDate := '';
dmUtils.DateInRightFormat(now, tmp, sDate);
sbMain.Panels[0].Text := sDate;
dmUtils.DateInRightFormat(now , tmp, sDate);
//sbMain.Panels[0].Text :=sDate; //why we have 2 timers for showing date in panel???
sbMain.Panels[0].Text :=uVersion.cBUILD_DATE;
end;
procedure TfrmMain.tmrUploadAllTimer(Sender: TObject);
@ -781,7 +810,7 @@ begin
sDate := '';
Date := dmUtils.GetDateTime(0);
dmUtils.DateInRightFormat(date, tmp, sDate);
sbMain.Panels[4].Text := sDate + ' ' + TimeToStr(Date)
sbMain.Panels[4].Text := sDate + ' ' + TimeToStr(Date);
end;
procedure TfrmMain.acAboutExecute(Sender: TObject);
@ -1073,7 +1102,7 @@ begin
while not dbgrdMain.DataSource.DataSet.EOF do
begin
dbgrdMain.SelectedRows.CurrentRowSelected := True;
dbgrdMain.DataSource.DataSet.Next
dbgrdMain.DataSource.DataSet.Next;
end
finally
dbgrdMain.DataSource.Dataset.EnableControls;
@ -1660,6 +1689,8 @@ begin
end;
dmData.IsFilter := False;
dmData.IsSFilter := False;
lblDist.Caption :='';
lblDistance.Visible:=(lblDist.Caption <>'');
RefreshQSODXCCCount
end;
@ -1670,6 +1701,9 @@ end;
procedure TfrmMain.acCreateFilterExecute(Sender: TObject);
begin
lblDist.Caption :='';
lblDistance.Visible:=(lblDist.Caption <>'');
with TfrmFilter.Create(self) do
try
ShowModal;
@ -1700,7 +1734,7 @@ begin
dlgSave.Filter := 'ADIF|*.adi;*.ADI';
if dlgSave.Execute then
begin
ShowWidths:=false;
frmExportPref := TfrmExportPref.Create(frmMain);
try
if frmExportPref.ShowModal = mrCancel then
@ -1729,7 +1763,7 @@ begin
if dlgSave.Execute then
begin
ShowWidths:=true;
frmExportPref := TfrmExportPref.Create(frmMain);
try
if frmExportPref.ShowModal = mrCancel then
@ -1910,6 +1944,10 @@ begin
dbtQSLSDate.DataField := 'qsls_date';
dbtQSLRDate.DataField := 'qslr_date';
lblDist.Caption := '';
lblSumDist.Caption := '';
lblLongest.Caption := '';
sbMain.Panels[1].Text := 'Ver. ' + dmData.VersionString;
sbMain.Panels[1].Width := 140;
tmrTime.Enabled := True;
@ -2028,6 +2066,7 @@ procedure TfrmMain.ShowFields;
dbgrdMain.Columns[i].Alignment := taCenter;
dbgrdMain.Columns[i].Title.Alignment := taCenter;
end;
if (UpperCase(dbgrdMain.Columns[i].DisplayName) = 'WAZ') then
begin
dbgrdMain.Columns[i].Alignment := taCenter;
@ -2086,6 +2125,8 @@ procedure TfrmMain.ShowFields;
end;
begin
pnlDistance.Visible := cqrini.ReadBool('Columns', 'Distance', False);
dbgrdMain.DataSource := dmData.dsrMain;
dbgrdMain.ResetColWidths;
dmUtils.LoadForm(frmMain);
@ -2195,14 +2236,28 @@ end;
procedure TfrmMain.ChechkSelRecords;
begin
if dbgrdMain.SelectedRows.Count > 1 then
begin
lblDist.Visible :=False;
lblDistance.Visible:=False;
sbMain.Panels[3].Text := IntToStr(dbgrdMain.SelectedRows.Count) + ' records selected'
end
else
begin
sbMain.Panels[3].Text := '';
lblDist.Visible :=True;
lblDistance.Visible:=True;
end;
end;
procedure TfrmMain.CheckAttachment;
var
qrb:String;
f :integer;
begin
if not dmData.qCQRLOG.Active then
exit;
if dmData.qCQRLOG.RecordCount = 0 then
@ -2219,9 +2274,34 @@ begin
acQSLImage.Enabled := True
else
acQSLImage.Enabled := False
end
end;
if pnlDistance.Visible then
begin
qrb := CalcQrb(dmData.qCQRLOG.Fields[19].AsString,dmData.qCQRLOG.Fields[18].AsString,True);
lblDistance.Visible:=(qrb<>'') and (sbMain.Panels[3].Text = '');
lblDist.Caption := qrb
end
end;
function TfrmMain.CalcQrb(Myloc,loc:string;showUnits:boolean):string;
var
qrb, //distance
qrc: String; //direction
Begin
if length(Myloc) = 4 then Myloc := Myloc +'LL';
if length(loc) = 4 then loc := loc +'LL';
qrb:='';
dmUtils.DistanceFromLocator(Myloc,loc,qrb,qrc);
if qrb <>'' then
if cqrini.ReadBool('Program','ShowMiles',False) then
Begin
qrb := FloatToStr(dmUtils.KmToMiles(StrToInt(qrb)));
if showUnits then qrb:= qrb + 'mi';
end
else
if showUnits then qrb := qrb + 'km';
Result := qrb;
end;
end.

View File

@ -1,7 +1,7 @@
object frmNewQSO: TfrmNewQSO
Left = 35
Left = 159
Height = 709
Top = 64
Top = 208
Width = 997
HelpType = htKeyword
HelpKeyword = 'help/index.html'
@ -2137,7 +2137,7 @@ object frmNewQSO: TfrmNewQSO
OnKeyPress = FormKeyPress
OnShow = FormShow
OnWindowStateChange = FormWindowStateChange
LCLVersion = '2.0.2.0'
LCLVersion = '2.0.4.0'
object sbNewQSO: TStatusBar
AnchorSideBottom.Side = asrBottom
Left = 0
@ -3027,15 +3027,14 @@ object frmNewQSO: TfrmNewQSO
Width = 72
BorderSpacing.Left = 5
BorderSpacing.Top = 2
CharCase = ecUppercase
MaxLength = 10
OnChange = edtGridChange
OnEnter = edtGridEnter
OnExit = edtGridExit
OnKeyDown = edtGridKeyDown
ParentShowHint = False
ShowHint = True
TabOrder = 7
Text = 'JO80OB'
end
object edtPWR: TEdit
AnchorSideLeft.Control = edtGrid
@ -3557,11 +3556,11 @@ object frmNewQSO: TfrmNewQSO
Height = 135
Top = 376
Width = 938
ActivePage = tabDXCCStat
ActivePage = tabSatellite
Align = alBottom
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 40
TabIndex = 0
TabIndex = 1
TabOrder = 28
object tabDXCCStat: TTabSheet
Caption = 'DXCC statistic'
@ -3664,11 +3663,10 @@ object frmNewQSO: TfrmNewQSO
Width = 128
BorderSpacing.Left = 10
BorderSpacing.Top = 2
OnChange = cmbPropagationChange
OnChange = edtRXFreqChange
OnExit = edtRXFreqExit
ParentFont = False
TabOrder = 2
Text = 'edtRXFreq'
end
object btnClearSatellite: TButton
AnchorSideLeft.Control = edtRXFreq

View File

@ -393,6 +393,7 @@ type
procedure edtDateEnter(Sender: TObject);
procedure edtDXCCRefEnter(Sender: TObject);
procedure edtEndTimeEnter(Sender: TObject);
procedure edtGridChange(Sender: TObject);
procedure edtGridEnter(Sender: TObject);
procedure edtHisRSTExit(Sender: TObject);
procedure edtHisRSTKeyPress(Sender : TObject; var Key : char);
@ -404,6 +405,7 @@ type
procedure edtQSL_VIAEnter(Sender: TObject);
procedure edtQTHEnter(Sender: TObject);
procedure edtRemQSOEnter(Sender: TObject);
procedure edtRXFreqChange(Sender: TObject);
procedure edtRXFreqExit(Sender: TObject);
procedure edtStartTimeEnter(Sender: TObject);
procedure edtStateEnter(Sender: TObject);
@ -625,6 +627,7 @@ type
procedure SelTextFix(Edit : TEdit; var Key : Char);
function CheckFreq(freq : String) : String;
procedure WaitWeb(secs:integer);
public
QTHfromCb : Boolean;
@ -718,6 +721,7 @@ var
c_ErrMsg : String;
c_SyncText : String;
c_running : Boolean = False;
c_lock : Boolean = False;
Azimuth : String;
minimalize : Boolean;
@ -740,6 +744,7 @@ uses dUtils, fChangeLocator, dDXCC, dDXCluster, dData, fMain, fSelectDXCC, fGray
fBigSquareStat, fSCP, fRotControl, fLogUploadStatus, fRbnMonitor, fException, fCommentToCall,
fRemind, fContest, fXfldigi, dMembership, dSatellite;
procedure TQSLTabThread.Execute;
var
data : string;
@ -768,7 +773,19 @@ begin
Synchronize(@frmNewQSO.SynDXCCTab)
end
end;
procedure TfrmNewQSO.WaitWeb(secs:integer);
var
l:integer;
Begin
//set c_lock false before calling info fetch!
for l:=1 to secs*10 do //wait for web response sec timeout
Begin
if (( not c_lock) and c_running )then c_lock := true;
sleep(100);
Application.ProcessMessages;
if ( c_lock and (not c_running ))then break;
end;
end;
procedure TfrmNewQSO.SynDXCCTab;
begin
@ -1074,6 +1091,7 @@ begin
QTHfromCb := False;
lblAmbiguous.Visible := False;
old_call := '';
idcall := ''; //without this 2ESC when cursor is at cmbfreq(Auto=unchecked) restores club->award text after clearall
old_time := '';
old_rstr := '';
old_rsts := '';
@ -1894,8 +1912,7 @@ var
Buf,
prik,
data:string;
chkDuplicates,
c_lock: boolean;
chkDuplicates :boolean;
i:longint;
l:integer;
@ -1940,13 +1957,7 @@ begin
edtCall.Text := uppercase(data);
c_lock :=false;
edtCallExit(nil); //does info fetch
for l:=1 to 50 do //wait for web response 5sec timeout
Begin
if (( not c_lock) and c_running )then c_lock := true;
sleep(100);
Application.ProcessMessages;
if ( c_lock and (not c_running ))then break;
end;
WaitWeb(5); //wait for web response 5sec timeout
end;
'GRIDSQUARE' :Begin
data := uppercase(data);
@ -2448,9 +2459,10 @@ begin
old_cfreq := '';
old_cmode := '';
edtCall.Text := call;
c_lock:=False;
edtCallExit(nil); //<--------this will fetch web info
if dmData.DebugLevel>=1 then Writeln('Call was not there already');
sleep(1000); // give time for web
WaitWeb(2); // give time for web
end;
//these can be altered always
@ -2621,9 +2633,10 @@ begin
if edtCall.Text <> call then //call (and web info) maybe there already ok from status packet
Begin
edtCall.Text := call;
c_lock:=False;
edtCallExit(nil); //<--------this will fetch web info
if dmData.DebugLevel>=1 then Writeln('Call was not there already');
sleep(1000); // give time for web
WaitWeb(2); // give time for web
end;
//---------------------------------------------LOCATOR-------
loc:= trim(StrBuf(index));
@ -4087,6 +4100,12 @@ begin
edtEndTime.SelectAll
end;
procedure TfrmNewQSO.edtGridChange(Sender: TObject);
begin
edtGrid.Text := dmUtils.StdFormatLocator(edtGrid.Text);
edtGrid.SelStart := Length(edtGrid.Text);
end;
procedure TfrmNewQSO.edtGridEnter(Sender: TObject);
begin
edtGrid.SelectAll
@ -4437,6 +4456,21 @@ begin
edtRemQSO.SelectAll
end;
procedure TfrmNewQSO.edtRXFreqChange(Sender: TObject);
begin
//prevents typing in too large number value for database
if (length(edtRXFreq.Text)>6) then
if ( (pos(',',edtRXFreq.Text) = 0) and (pos('.',edtRXFreq.Text) = 0) )then
begin
edtRXFreq.Text:= copy(edtRXFreq.Text,1,6);
edtRXFreq.SelStart := Length(edtRXFreq.Text);
end;
//no jokes...
if (pos('999999.9999',edtRXFreq.Text)>0) or (pos('999999,9999',edtRXFreq.Text)>0) then
edtRXFreq.Text:= '';
frmNewQSO.cmbPropagationChange(nil);
end;
procedure TfrmNewQSO.edtRXFreqExit(Sender: TObject);
begin
edtRXFreq.Text := CheckFreq(edtRXFreq.Text);
@ -4989,11 +5023,11 @@ begin
edtCall.SetFocus
end
else
edtCall.Text := ''; // OnChange calls ClearAll;
edtCall.Text := ''; // OnChange calls ClearAll;
EscFirstTime := False;
old_ccall := '';
old_cfreq := '';
old_cmode := ''
old_cmode := '';
end
else begin
if Assigned(CWint) then

View File

@ -1,7 +1,7 @@
object frmNewQTHProfile: TfrmNewQTHProfile
Left = 548
Height = 404
Top = 298
Left = 522
Height = 425
Top = 146
Width = 395
HorzScrollBar.Page = 394
VertScrollBar.Page = 403
@ -9,19 +9,19 @@ object frmNewQTHProfile: TfrmNewQTHProfile
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'frmNewQTHProfile'
ClientHeight = 404
ClientHeight = 425
ClientWidth = 395
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '1.8.2.0'
LCLVersion = '2.0.4.0'
object lblLocator: TLabel
AnchorSideTop.Control = edtProfNr
AnchorSideTop.Side = asrBottom
Left = 9
Height = 17
Top = 69
Width = 53
Top = 76
Width = 48
BorderSpacing.Top = 10
Caption = 'Locator'
ParentColor = False
@ -31,8 +31,8 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 9
Height = 17
Top = 125
Width = 29
Top = 139
Width = 28
BorderSpacing.Top = 10
Caption = 'QTH'
ParentColor = False
@ -42,8 +42,8 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 177
Height = 17
Top = 69
Width = 73
Top = 68
Width = 70
BorderSpacing.Top = 10
Caption = 'Equipment'
ParentColor = False
@ -53,8 +53,8 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 9
Height = 17
Top = 244
Width = 59
Top = 258
Width = 57
BorderSpacing.Top = 10
Caption = 'Remarks'
ParentColor = False
@ -64,7 +64,7 @@ object frmNewQTHProfile: TfrmNewQTHProfile
Left = 9
Height = 17
Top = 13
Width = 100
Width = 95
BorderSpacing.Bottom = 2
Caption = 'Profile number'
ParentColor = False
@ -73,12 +73,12 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Control = lblLocator
AnchorSideTop.Side = asrBottom
Left = 8
Height = 27
Top = 88
Height = 34
Top = 95
Width = 92
BorderSpacing.Top = 2
CharCase = ecUppercase
MaxLength = 6
OnChange = edtLocatorChange
TabOrder = 1
end
object mQTH: TMemo
@ -86,7 +86,7 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 9
Height = 90
Top = 144
Top = 158
Width = 150
BorderSpacing.Top = 2
MaxLength = 250
@ -98,7 +98,7 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 177
Height = 146
Top = 88
Top = 87
Width = 208
BorderSpacing.Top = 2
MaxLength = 250
@ -110,7 +110,7 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Side = asrBottom
Left = 9
Height = 90
Top = 263
Top = 277
Width = 376
BorderSpacing.Top = 2
ScrollBars = ssAutoBoth
@ -120,8 +120,8 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Control = mRemarks
AnchorSideTop.Side = asrBottom
Left = 28
Height = 31
Top = 363
Height = 35
Top = 377
Width = 60
AutoSize = True
BorderSpacing.Top = 10
@ -135,9 +135,9 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Control = mRemarks
AnchorSideTop.Side = asrBottom
Left = 288
Height = 31
Top = 363
Width = 60
Height = 35
Top = 377
Width = 62
AutoSize = True
BorderSpacing.Top = 10
BorderSpacing.InnerBorder = 1
@ -149,9 +149,9 @@ object frmNewQTHProfile: TfrmNewQTHProfile
end
object chkVisible: TCheckBox
Left = 177
Height = 24
Height = 23
Top = 35
Width = 149
Width = 146
Caption = 'Show profile in list'
Checked = True
State = cbChecked
@ -161,11 +161,12 @@ object frmNewQTHProfile: TfrmNewQTHProfile
AnchorSideTop.Control = lblProfileNumber
AnchorSideTop.Side = asrBottom
Left = 9
Height = 27
Height = 34
Top = 32
Width = 93
BorderSpacing.Top = 2
CharCase = ecUppercase
NumbersOnly = True
OnKeyDown = edtProfNrKeyDown
TabOrder = 0
end

View File

@ -26,6 +26,7 @@ type
mRemarks: TMemo;
mEquipment: TMemo;
mQTH: TMemo;
procedure edtLocatorChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
@ -99,5 +100,11 @@ begin
Editing := False
end;
procedure TfrmNewQTHProfile.edtLocatorChange(Sender: TObject);
begin
edtLocator.Text := dmUtils.StdFormatLocator(edtLocator.Text);
edtLocator.SelStart := Length(edtLocator.Text);
end;
end.

View File

@ -1,37 +1,37 @@
object frmPreferences: TfrmPreferences
Left = 169
Left = 100
Height = 659
Top = 65
Width = 1000
Top = 395
Width = 1098
HelpType = htKeyword
HelpKeyword = 'help/h1.html'
HorzScrollBar.Page = 761
VertScrollBar.Page = 450
HorzScrollBar.Page = 834
VertScrollBar.Page = 544
ActiveControl = lbPreferences
AutoScroll = True
BorderIcons = [biSystemMenu]
Caption = 'Preferences'
ClientHeight = 659
ClientWidth = 1000
ClientWidth = 1098
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.0.2.0'
LCLVersion = '2.0.4.0'
object pgPreferences: TPageControl
Left = 160
Height = 659
Top = 0
Width = 752
ActivePage = tabVisibleColumns
Width = 850
ActivePage = tabXplanet
Align = alClient
TabIndex = 3
TabIndex = 16
TabOrder = 0
OnChange = pgPreferencesChange
object tabProgram: TTabSheet
Caption = 'Program'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label60: TLabel
Left = 364
Height = 17
@ -321,7 +321,7 @@ object frmPreferences: TfrmPreferences
object tabStation: TTabSheet
Caption = 'Station'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label1: TLabel
Left = 11
Height = 17
@ -381,7 +381,7 @@ object frmPreferences: TfrmPreferences
Height = 34
Top = 107
Width = 128
CharCase = ecUppercase
OnChange = edtLocChange
TabOrder = 3
end
end
@ -390,7 +390,7 @@ object frmPreferences: TfrmPreferences
AnchorSideBottom.Side = asrBottom
Caption = 'New QSO'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label82: TLabel
AnchorSideLeft.Control = edtRecetQSOs
AnchorSideLeft.Side = asrBottom
@ -832,7 +832,7 @@ object frmPreferences: TfrmPreferences
object tabVisibleColumns: TTabSheet
Caption = 'Visible columns'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object chkDate: TCheckBox
AnchorSideLeft.Control = tabVisibleColumns
AnchorSideTop.Control = tabVisibleColumns
@ -1014,11 +1014,11 @@ object frmPreferences: TfrmPreferences
end
object chkIOTA: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkMyLoc
AnchorSideTop.Control = chkDistance
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 84
Top = 110
Width = 56
BorderSpacing.Top = 3
Caption = 'IOTA'
@ -1030,7 +1030,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 110
Top = 136
Width = 66
BorderSpacing.Top = 3
Caption = 'Award'
@ -1042,7 +1042,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 136
Top = 162
Width = 72
BorderSpacing.Top = 3
Caption = 'County'
@ -1054,7 +1054,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 162
Top = 188
Width = 66
BorderSpacing.Top = 3
Caption = 'Power'
@ -1066,7 +1066,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 188
Top = 214
Width = 62
BorderSpacing.Top = 3
Caption = 'DXCC'
@ -1078,7 +1078,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 214
Top = 240
Width = 139
BorderSpacing.Top = 3
Caption = 'Comment to QSO'
@ -1090,7 +1090,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 240
Top = 266
Width = 56
BorderSpacing.Top = 3
Caption = 'WAZ'
@ -1102,7 +1102,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 266
Top = 292
Width = 48
BorderSpacing.Top = 3
Caption = 'ITU'
@ -1114,7 +1114,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 292
Top = 318
Width = 60
BorderSpacing.Top = 3
Caption = 'State'
@ -1305,7 +1305,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 318
Top = 344
Width = 121
BorderSpacing.Top = 3
Caption = 'Satellite name'
@ -1317,7 +1317,7 @@ object frmPreferences: TfrmPreferences
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 344
Top = 370
Width = 113
BorderSpacing.Top = 3
Caption = 'RX frequency'
@ -1360,10 +1360,10 @@ object frmPreferences: TfrmPreferences
TabOrder = 42
end
object chkSTX_str: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkRXFreq
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkContestName
AnchorSideTop.Side = asrBottom
Left = 163
Left = 308
Height = 23
Top = 370
Width = 118
@ -1372,10 +1372,10 @@ object frmPreferences: TfrmPreferences
TabOrder = 43
end
object chkSRX_str: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkSTX_str
AnchorSideTop.Side = asrBottom
Left = 163
Left = 308
Height = 23
Top = 396
Width = 118
@ -1383,11 +1383,23 @@ object frmPreferences: TfrmPreferences
Caption = 'ContMSG rcvd'
TabOrder = 44
end
object chkDistance: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkMyLoc
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 84
Width = 133
BorderSpacing.Top = 3
Caption = 'Distance (in pnl)'
TabOrder = 45
end
end
object tabBands: TTabSheet
Caption = 'Bands'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object cb136kHz: TCheckBox
Left = 14
Height = 23
@ -1610,7 +1622,7 @@ object frmPreferences: TfrmPreferences
object tabTRXcontrol: TTabSheet
Caption = 'TRX control'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object btnChangeDefaultFreq: TButton
Left = 472
Height = 25
@ -2388,7 +2400,7 @@ object frmPreferences: TfrmPreferences
object TabROTcontrol: TTabSheet
Caption = 'ROT control'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox41: TGroupBox
Left = 7
Height = 88
@ -3094,7 +3106,7 @@ object frmPreferences: TfrmPreferences
object tabModes: TTabSheet
Caption = 'Modes'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox35: TGroupBox
Left = 14
Height = 73
@ -3429,7 +3441,7 @@ object frmPreferences: TfrmPreferences
object tabQTHProfiles: TTabSheet
Caption = 'QTH Profiles'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object chkUseProfiles: TCheckBox
Left = 9
Height = 23
@ -3534,289 +3546,19 @@ object frmPreferences: TfrmPreferences
object tabExport: TTabSheet
Caption = 'Export'
ClientHeight = 628
ClientWidth = 742
inline fraExportSettings: TfraExportPref
Left = 16
Height = 504
ClientWidth = 840
inline fraExportPref1: TfraExportPref
Top = 8
Width = 640
ClientHeight = 504
ClientWidth = 640
DesignLeft = 623
DesignTop = 214
inherited chkProfile: TCheckBox
Top = 326
Width = 67
end
inherited chkAscTime: TCheckBox
Left = 8
Top = 448
Width = 197
end
inherited chkExCont: TCheckBox
Width = 89
end
inherited chkexQTH: TCheckBox
Width = 54
end
inherited chkexName: TCheckBox
Width = 65
end
inherited chkexRSTR: TCheckBox
Width = 83
end
inherited chkexRSTS: TCheckBox
Width = 83
end
inherited chkexFreq: TCheckBox
Width = 54
end
inherited chkexMode: TCheckBox
Width = 62
end
inherited chkexCall: TCheckBox
Width = 51
end
inherited chkexTimeoff: TCheckBox
Width = 80
end
inherited chkexTimeon: TCheckBox
Width = 79
end
inherited chkexDate: TCheckBox
Width = 57
end
inherited edtWDate: TEdit
Height = 34
end
inherited edtWTimeOn: TEdit
Height = 34
end
inherited edtWTimeOff: TEdit
Height = 34
end
inherited edtWCall: TEdit
Height = 34
end
inherited edtWMode: TEdit
Height = 34
end
inherited edtWFreq: TEdit
Height = 34
end
inherited edtWRstS: TEdit
Height = 34
end
inherited edtWRstR: TEdit
Height = 34
end
inherited edtWName: TEdit
Height = 34
end
inherited edtWQTH: TEdit
Height = 34
end
inherited Label46: TLabel
Height = 17
Width = 31
end
inherited Label49: TLabel
Height = 17
Width = 38
end
inherited Label47: TLabel
Height = 17
Width = 31
end
inherited Label50: TLabel
Height = 17
Width = 38
end
inherited Label48: TLabel
Height = 17
Width = 31
end
inherited Label51: TLabel
Height = 17
Width = 38
end
inherited chkexQSLS: TCheckBox
Width = 83
end
inherited chkexQSLR: TCheckBox
Width = 111
end
inherited chkexQSLVIA: TCheckBox
Width = 113
end
inherited chkexLoc: TCheckBox
Width = 74
end
inherited chkexMyLoc: TCheckBox
Width = 95
end
inherited chkexIOTA: TCheckBox
Width = 56
end
inherited chkexAward: TCheckBox
Width = 66
end
inherited chkexCounty: TCheckBox
Width = 72
end
inherited chkexPower: TCheckBox
Width = 66
end
inherited chkexDXCC: TCheckBox
Width = 62
end
inherited chkexRemarks: TCheckBox
Width = 83
end
inherited edtWRemarks: TEdit
Height = 34
end
inherited edtWDXCC: TEdit
Height = 34
end
inherited edtWPower: TEdit
Height = 34
end
inherited edtWCounty: TEdit
Height = 34
end
inherited edtWAward: TEdit
Height = 34
end
inherited edtWIOTA: TEdit
Height = 34
end
inherited edtWMyLoc: TEdit
Height = 34
end
inherited edtWLoc: TEdit
Height = 34
end
inherited edtWQSLVIA: TEdit
Height = 34
end
inherited edtWQSLR: TEdit
Height = 34
end
inherited edtWQSLS: TEdit
Height = 34
end
inherited chkexeQSLRDate: TCheckBox
Width = 130
end
inherited chkexeQSLR: TCheckBox
Width = 120
end
inherited chkexeQSLSDate: TCheckBox
Width = 129
end
inherited chkexeQSLS: TCheckBox
Width = 120
end
inherited chkexQSLRDate: TCheckBox
Width = 116
end
inherited chkexQSLSDate: TCheckBox
Width = 116
end
inherited chkexLQSLRDate: TCheckBox
Width = 133
end
inherited chkexLQSLR: TCheckBox
Width = 123
end
inherited chkexLQSLSDate: TCheckBox
Width = 132
end
inherited chkexLQSLS: TCheckBox
Width = 123
end
inherited chkexState: TCheckBox
Width = 60
end
inherited chkexNote: TCheckBox
Width = 57
end
inherited chkexITU: TCheckBox
Width = 48
end
inherited chkexWAZ: TCheckBox
Width = 56
end
inherited edtWWAZ: TEdit
Height = 34
end
inherited edtWITU: TEdit
Height = 34
end
inherited edtWNote: TEdit
Height = 34
end
inherited edtWState: TEdit
Height = 34
end
inherited edtWLQSLS: TEdit
Height = 34
end
inherited edtWLQSLSDate: TEdit
Height = 34
end
inherited edtWLQSLR: TEdit
Height = 34
end
inherited edtWLQSLRDate: TEdit
Height = 34
end
inherited edtWQSLSDate: TEdit
Height = 34
end
inherited edtWQSLRDate: TEdit
Height = 34
end
inherited edtWeQSLS: TEdit
Height = 34
end
inherited edtWeQSLSDate: TEdit
Height = 34
end
inherited edtWeQSLR: TEdit
Height = 34
end
inherited edtWeQSLRDate: TEdit
Height = 34
end
inherited chkExPropagation: TCheckBox
Width = 104
end
inherited chkExSat: TCheckBox
Width = 121
end
inherited chkExRXFreq: TCheckBox
Width = 113
end
inherited edtWProp: TEdit
Height = 34
end
inherited edtWSatName: TEdit
Height = 34
end
inherited edtWRxFreq: TEdit
Height = 34
end
inherited chkexContest: TCheckBox
Width = 76
inherited lblField1: TLabel
AnchorSideLeft.Control = fraExportPref1
AnchorSideTop.Control = fraExportPref1
end
end
end
object tabDXCluster: TTabSheet
Caption = 'DXCluster'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object gbDXCColor: TGroupBox
AnchorSideLeft.Control = tabDXCluster
AnchorSideTop.Control = tabDXCluster
@ -4271,7 +4013,7 @@ object frmPreferences: TfrmPreferences
object tabFont: TTabSheet
Caption = 'Fonts'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox7: TGroupBox
Left = 14
Height = 352
@ -4482,7 +4224,7 @@ object frmPreferences: TfrmPreferences
object tabWazItu: TTabSheet
Caption = 'WAZ, ITU zones'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox8: TGroupBox
Left = 14
Height = 230
@ -4625,7 +4367,7 @@ object frmPreferences: TfrmPreferences
object tabIOTA: TTabSheet
Caption = 'IOTA'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox10: TGroupBox
Left = 22
Height = 168
@ -4682,7 +4424,7 @@ object frmPreferences: TfrmPreferences
object tabMemebership: TTabSheet
Caption = 'Membership'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox11: TGroupBox
Left = 14
Height = 80
@ -4975,7 +4717,7 @@ object frmPreferences: TfrmPreferences
object tabBandMap: TTabSheet
Caption = 'Bandmap'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox16: TGroupBox
Left = 13
Height = 61
@ -5229,7 +4971,7 @@ object frmPreferences: TfrmPreferences
object tabXplanet: TTabSheet
Caption = 'xplanet support'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox21: TGroupBox
Left = 14
Height = 89
@ -5238,7 +4980,7 @@ object frmPreferences: TfrmPreferences
Caption = ' Path for the xplanet '
ClientHeight = 71
ClientWidth = 519
TabOrder = 0
TabOrder = 10
object edtXplanetPath: TEdit
Left = 6
Height = 34
@ -5481,14 +5223,15 @@ object frmPreferences: TfrmPreferences
Top = 424
Width = 521
Caption = ' Center locator for xplanet (if different from default)'
ClientHeight = 63
ClientWidth = 515
ClientHeight = 71
ClientWidth = 519
TabOrder = 0
object edtXplanetLoc: TEdit
Left = 6
Height = 25
Height = 34
Top = 15
Width = 96
OnChange = edtXplanetLocChange
TabOrder = 0
end
end
@ -5496,7 +5239,7 @@ object frmPreferences: TfrmPreferences
object tabZipCode: TTabSheet
Caption = 'Zip code tracking'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox25: TGroupBox
Left = 6
Height = 104
@ -5753,7 +5496,7 @@ object frmPreferences: TfrmPreferences
object tabLoTW: TTabSheet
Caption = 'LoTW/eQSL support'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label10: TLabel
Left = 271
Height = 34
@ -5930,7 +5673,7 @@ object frmPreferences: TfrmPreferences
object tabCWInterface: TTabSheet
Caption = 'CW interface'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label83: TLabel
Left = 15
Height = 17
@ -6260,7 +6003,7 @@ object frmPreferences: TfrmPreferences
object tabFldigi1: TTabSheet
Caption = 'fldigi/wsjt interface'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox31: TGroupBox
Left = 12
Height = 328
@ -6900,7 +6643,7 @@ object frmPreferences: TfrmPreferences
object tabAutoBackup: TTabSheet
Caption = 'Exit & Auto backup'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox32: TGroupBox
Left = 8
Height = 370
@ -7048,7 +6791,7 @@ object frmPreferences: TfrmPreferences
object tabExtViewers: TTabSheet
Caption = 'External viewers'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object Label99: TLabel
Left = 23
Height = 17
@ -7125,7 +6868,7 @@ object frmPreferences: TfrmPreferences
object tabCallbook: TTabSheet
Caption = 'Callbook support'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox38: TGroupBox
Left = 13
Height = 160
@ -7190,7 +6933,7 @@ object frmPreferences: TfrmPreferences
object tabRBN: TTabSheet
Caption = 'RBN support'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object chkRBNAutoConn: TCheckBox
Left = 408
Height = 23
@ -7403,7 +7146,7 @@ object frmPreferences: TfrmPreferences
object tabOnlineLog: TTabSheet
Caption = 'Online log upload'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object GroupBox44: TGroupBox
Left = 13
Height = 179
@ -7705,7 +7448,7 @@ object frmPreferences: TfrmPreferences
object tabCondx: TTabSheet
Caption = 'Propagation'
ClientHeight = 628
ClientWidth = 742
ClientWidth = 840
object rbCondxAsImage: TRadioButton
Left = 25
Height = 23
@ -7776,7 +7519,7 @@ object frmPreferences: TfrmPreferences
end
object Panel1: TPanel
AnchorSideBottom.Side = asrBottom
Left = 912
Left = 1010
Height = 659
Top = 0
Width = 88
@ -7784,6 +7527,7 @@ object frmPreferences: TfrmPreferences
ClientHeight = 659
ClientWidth = 88
TabOrder = 1
OnClick = Panel1Click
object btnOK: TButton
AnchorSideLeft.Control = Panel1
AnchorSideLeft.Side = asrCenter
@ -7872,12 +7616,12 @@ object frmPreferences: TfrmPreferences
object dlgFont: TFontDialog
MinFontSize = 0
MaxFontSize = 0
left = 936
top = 264
left = 1040
top = 280
end
object dlgOpen: TOpenDialog
left = 936
top = 208
left = 1040
top = 216
end
object dlgColor: TColorDialog
Color = clBlack
@ -7903,7 +7647,7 @@ object frmPreferences: TfrmPreferences
'ColorS=F0FBFF'
'ColorT=A4A0A0'
)
left = 936
top = 328
left = 1040
top = 344
end
end

View File

@ -120,6 +120,7 @@ type
cb60m: TCheckBox;
cb30cm: TCheckBox;
cgLimit: TCheckGroup;
chkDistance: TCheckBox;
chkSTX: TCheckBox;
chkSRX: TCheckBox;
chkSTX_str: TCheckBox;
@ -616,7 +617,7 @@ type
edtName: TEdit;
edtRST_R: TEdit;
dlgFont: TFontDialog;
fraExportSettings : TfraExportPref;
fraExportPref1: TfraExportPref;
gbProfiles1: TGroupBox;
grbSerialR2: TGroupBox;
grbSerialR3: TGroupBox;
@ -673,6 +674,7 @@ type
GroupBox52: TGroupBox;
gbDXCConnect: TGroupBox;
gbDXCSpots: TGroupBox;
GroupBox53: TGroupBox;
GroupBox7: TGroupBox;
GroupBox8: TGroupBox;
GroupBox9: TGroupBox;
@ -1019,6 +1021,7 @@ type
procedure DateEditCallEditingDone(Sender: TObject);
procedure DateEditLocEditingDone(Sender: TObject);
procedure edtK3NGSerSpeedChange(Sender: TObject);
procedure edtLocChange(Sender: TObject);
procedure edtR1RigCtldArgsChange(Sender: TObject);
procedure edtR1RigCtldPortChange(Sender : TObject);
procedure edtR2RigCtldArgsChange(Sender : TObject);
@ -1030,6 +1033,7 @@ type
procedure edtWinMinSpeedChange(Sender: TObject);
procedure edtWinPortChange(Sender: TObject);
procedure edtWinSpeedChange(Sender: TObject);
procedure edtXplanetLocChange(Sender: TObject);
procedure lbPreferencesClick(Sender: TObject);
procedure btnDefineProfileClick(Sender: TObject);
procedure btnHelpClick(Sender: TObject);
@ -1057,6 +1061,7 @@ type
procedure FormShow(Sender: TObject);
procedure edtPoll2Exit(Sender: TObject);
procedure edtPoll1Exit(Sender: TObject);
procedure Panel1Click(Sender: TObject);
procedure pgPreferencesChange(Sender: TObject);
procedure pnlQSOColorClick(Sender : TObject);
private
@ -1164,6 +1169,7 @@ begin
cqrini.WriteBool('Columns', 'QSL_VIA', chkQSL_VIA.Checked);
cqrini.WriteBool('Columns', 'Locator', chkLoc.Checked);
cqrini.WriteBool('Columns', 'MyLoc', chkMyLoc.Checked);
cqrini.WriteBool('Columns', 'Distance', chkDistance.Checked);
cqrini.WriteBool('Columns', 'IOTA', chkIOTA.Checked);
cqrini.WriteBool('Columns', 'Award', chkAward.Checked);
cqrini.WriteBool('Columns', 'Power', chkPower.Checked);
@ -1579,7 +1585,7 @@ begin
frmNewQSO.InitializeCW
end;
fraExportSettings.SaveExportPref;
fraExportPref1.SaveExportPref;
dmUtils.TimeOffset := StrToCurr(edtOffset.Text);
dmUtils.GrayLineOffset := StrToCurr(edtGrayLineOffset.Text);
@ -2368,6 +2374,12 @@ begin
WinKeyerChanged := True
end;
procedure TfrmPreferences.edtLocChange(Sender: TObject);
begin
edtLoc.Text := dmUtils.StdFormatLocator(edtLoc.Text);
edtLoc.SelStart := Length(edtLoc.Text);
end;
procedure TfrmPreferences.edtR1RigCtldArgsChange(Sender: TObject);
begin
TRXChanged := True
@ -2424,6 +2436,12 @@ begin
WinKeyerChanged := True
end;
procedure TfrmPreferences.edtXplanetLocChange(Sender: TObject);
begin
edtXplanetLoc.Text := dmUtils.StdFormatLocator(edtXplanetLoc.Text);
edtXplanetLoc.SelStart := Length(edtXplanetLoc.Text);
end;
procedure TfrmPreferences.lbPreferencesClick(Sender: TObject);
begin
pgPreferences.ActivePageIndex := lbPreferences.ItemIndex;
@ -2525,6 +2543,7 @@ begin
chkQSL_VIA.Checked := cqrini.ReadBool('Columns', 'QSL_VIA', False);
chkLoc.Checked := cqrini.ReadBool('Columns', 'Locator', False);
chkMyLoc.Checked := cqrini.ReadBool('Columns', 'MyLoc', False);
chkDistance.Checked := cqrini.ReadBool('Columns', 'Distance', False);
chkIOTA.Checked := cqrini.ReadBool('Columns', 'IOTA', False);
chkAward.Checked := cqrini.ReadBool('Columns', 'Award', False);
chkCounty.Checked := cqrini.ReadBool('Columns', 'County', False);
@ -2933,7 +2952,7 @@ begin
wasOnlineLogSupportEnabled := chkHaUpEnabled.Checked or chkClUpEnabled.Checked or chkHrUpEnabled.Checked;
fraExportSettings.LoadExportPref;
fraExportPref1.LoadExportPref;
lbPreferences.Selected[pgPreferences.ActivePageIndex] := True;
edtCW1.Width := 60;
@ -2965,6 +2984,11 @@ begin
edtPoll1.Text := '500';
end;
procedure TfrmPreferences.Panel1Click(Sender: TObject);
begin
end;
procedure TfrmPreferences.pgPreferencesChange(Sender: TObject);
begin
lbPreferences.Selected[pgPreferences.ActivePageIndex] := True;

View File

@ -1,209 +1,303 @@
object frmQSLExpPref: TfrmQSLExpPref
Left = 489
Height = 383
Top = 323
Width = 517
Left = 519
Height = 450
Top = 42
Width = 530
Caption = 'Choose fields for export'
ClientHeight = 383
ClientWidth = 517
ClientHeight = 450
ClientWidth = 530
OnShow = FormShow
LCLVersion = '1.2.4.0'
LCLVersion = '2.0.4.0'
object GroupBox1: TGroupBox
Left = 8
Height = 368
Top = 8
Width = 416
ClientHeight = 364
ClientWidth = 412
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 6
Height = 434
Top = 12
Width = 418
BorderSpacing.Left = 6
BorderSpacing.Top = 12
ClientHeight = 432
ClientWidth = 416
TabOrder = 0
object chkTimeOn: TCheckBox
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkDate
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 43
Height = 23
Top = 68
Width = 79
BorderSpacing.Top = 3
Caption = 'Time on'
Checked = True
State = cbChecked
TabOrder = 0
end
object chkDate: TCheckBox
AnchorSideLeft.Control = lblDateFormat
AnchorSideTop.Control = lblDateFormat
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 12
Width = 58
Height = 23
Top = 42
Width = 57
BorderSpacing.Top = 11
Caption = 'Date'
Checked = True
State = cbChecked
TabOrder = 1
end
object chkTimeOff: TCheckBox
AnchorSideLeft.Control = chkTimeOn
AnchorSideTop.Control = chkTimeOn
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 75
Width = 82
Height = 23
Top = 94
Width = 80
BorderSpacing.Top = 3
Caption = 'Time off'
TabOrder = 2
end
object chkCallSign: TCheckBox
AnchorSideLeft.Control = chkTimeOff
AnchorSideTop.Control = chkTimeOff
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 107
Height = 23
Top = 120
Width = 79
BorderSpacing.Top = 3
Caption = 'CallSign'
Checked = True
State = cbChecked
TabOrder = 3
end
object chkMode: TCheckBox
AnchorSideLeft.Control = chkCallSign
AnchorSideTop.Control = chkCallSign
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 139
Width = 65
Height = 23
Top = 146
Width = 62
BorderSpacing.Top = 3
Caption = 'Mode'
Checked = True
State = cbChecked
TabOrder = 4
end
object chkFreq: TCheckBox
AnchorSideLeft.Control = chkCallSign
AnchorSideTop.Control = chkMode
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 171
Width = 57
Height = 23
Top = 172
Width = 54
BorderSpacing.Top = 3
Caption = 'Freq'
TabOrder = 5
end
object chkRST_S: TCheckBox
AnchorSideLeft.Control = chkFreq
AnchorSideTop.Control = chkFreq
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 203
Height = 23
Top = 206
Width = 83
BorderSpacing.Top = 11
Caption = 'RST sent'
Checked = True
State = cbChecked
TabOrder = 6
end
object chkRST_R: TCheckBox
AnchorSideLeft.Control = chkRST_S
AnchorSideTop.Control = chkRST_S
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 235
Height = 23
Top = 241
Width = 82
BorderSpacing.Top = 12
Caption = 'RST Rec.'
TabOrder = 7
end
object chkName: TCheckBox
AnchorSideLeft.Control = chkRST_R
AnchorSideTop.Control = chkRST_R
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 267
Width = 66
Height = 23
Top = 276
Width = 65
BorderSpacing.Top = 12
Caption = 'Name'
TabOrder = 8
end
object chkQTH: TCheckBox
AnchorSideLeft.Control = chkName
AnchorSideTop.Control = chkName
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 299
Width = 55
Height = 23
Top = 302
Width = 54
BorderSpacing.Top = 3
Caption = 'QTH'
TabOrder = 9
end
object chkQSL_S: TCheckBox
AnchorSideLeft.Control = cbxDateFormat
AnchorSideTop.Control = cbxDateFormat
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 43
Width = 85
Height = 23
Top = 42
Width = 83
BorderSpacing.Top = 3
Caption = 'QSL sent'
TabOrder = 10
end
object chkQSL_VIA: TCheckBox
AnchorSideLeft.Control = chkQSL_R
AnchorSideTop.Control = chkQSL_R
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 107
Width = 115
Height = 23
Top = 94
Width = 113
BorderSpacing.Top = 3
Caption = 'QSL manager'
Checked = True
State = cbChecked
TabOrder = 11
end
object chkLoc: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkQSL_VIA
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 139
Width = 79
Height = 23
Top = 120
Width = 74
BorderSpacing.Top = 3
Caption = 'Locator'
TabOrder = 12
end
object chkMyLoc: TCheckBox
AnchorSideLeft.Control = chkLoc
AnchorSideTop.Control = chkLoc
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 171
Width = 98
Height = 23
Top = 146
Width = 95
BorderSpacing.Top = 3
Caption = 'My locator'
TabOrder = 13
end
object chkIOTA: TCheckBox
AnchorSideLeft.Control = chkDistance
AnchorSideTop.Control = chkDistance
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 203
Width = 58
Height = 23
Top = 198
Width = 56
BorderSpacing.Top = 3
Caption = 'IOTA'
TabOrder = 14
end
object chkAward: TCheckBox
AnchorSideLeft.Control = chkIOTA
AnchorSideTop.Control = chkIOTA
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 235
Width = 70
Height = 23
Top = 224
Width = 66
BorderSpacing.Top = 3
Caption = 'Award'
TabOrder = 15
end
object chkPower: TCheckBox
AnchorSideLeft.Control = chkAward
AnchorSideTop.Control = chkAward
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 267
Width = 69
Height = 23
Top = 250
Width = 66
BorderSpacing.Top = 3
Caption = 'Power'
TabOrder = 16
end
object chkRemarks: TCheckBox
AnchorSideLeft.Control = chkPower
AnchorSideTop.Control = chkPower
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 299
Width = 243
Height = 23
Top = 276
Width = 236
BorderSpacing.Top = 3
Caption = 'Comment to QSO/own comment'
TabOrder = 17
end
object chkQSL_R: TCheckBox
AnchorSideLeft.Control = chkQSL_S
AnchorSideTop.Control = chkQSL_S
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 75
Width = 113
Height = 23
Top = 68
Width = 111
BorderSpacing.Top = 3
Caption = 'QSL received'
TabOrder = 18
end
object chkQSLMsg: TCheckBox
AnchorSideLeft.Control = chkRemarks
AnchorSideTop.Control = chkRemarks
AnchorSideTop.Side = asrBottom
Left = 166
Height = 24
Top = 333
Width = 187
Height = 23
Top = 302
Width = 183
BorderSpacing.Top = 3
Caption = 'QSL message (PSE/TNX)'
TabOrder = 19
end
object chkBand: TCheckBox
AnchorSideLeft.Control = chkQTH
AnchorSideTop.Control = chkQTH
AnchorSideTop.Side = asrBottom
Left = 14
Height = 24
Top = 333
Width = 60
Height = 23
Top = 328
Width = 59
BorderSpacing.Top = 3
Caption = 'Band'
Checked = True
State = cbChecked
TabOrder = 20
end
object cbxDateFormat: TComboBox
AnchorSideLeft.Control = lblDateFormat
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblDateFormat
AnchorSideTop.Side = asrCenter
Left = 166
Height = 29
Height = 34
Hint = 'Change the format of date for export'
Top = 6
Top = 5
Width = 232
BorderSpacing.Left = 73
BorderSpacing.Top = 6
ItemHeight = 0
ItemIndex = 0
Items.Strings = (
@ -222,11 +316,16 @@ object frmQSLExpPref: TfrmQSLExpPref
Text = 'yyyy-mm-dd'
end
object tgSplitRST_S: TToggleBox
Left = 102
Height = 24
AnchorSideLeft.Control = chkRST_S
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = chkRST_S
AnchorSideTop.Side = asrCenter
Left = 100
Height = 32
Hint = 'Split RST in three fields.'
Top = 203
Width = 50
Top = 201
Width = 60
BorderSpacing.Left = 3
Caption = 'Split'
OnClick = tgSplit_Click
ParentShowHint = False
@ -234,32 +333,154 @@ object frmQSLExpPref: TfrmQSLExpPref
TabOrder = 22
end
object tgSplitRST_R: TToggleBox
Left = 102
Height = 24
AnchorSideLeft.Control = chkRST_R
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = chkRST_R
AnchorSideTop.Side = asrCenter
Left = 99
Height = 32
Hint = 'Split RST in three fields.'
Top = 235
Width = 50
Top = 236
Width = 60
BorderSpacing.Left = 3
Caption = 'Split'
OnClick = tgSplit_Click
ParentShowHint = False
ShowHint = True
TabOrder = 23
end
object lblDateFormat: TLabel
AnchorSideLeft.Control = GroupBox1
AnchorSideTop.Control = GroupBox1
Left = 14
Height = 17
Top = 14
Width = 79
BorderSpacing.Left = 14
BorderSpacing.Top = 14
Caption = 'Date format'
ParentColor = False
end
object chkDistance: TCheckBox
AnchorSideLeft.Control = chkMyLoc
AnchorSideTop.Control = chkMyLoc
AnchorSideTop.Side = asrBottom
Left = 166
Height = 23
Top = 172
Width = 83
BorderSpacing.Top = 3
Caption = 'Distance'
TabOrder = 24
end
object chkPropagation: TCheckBox
AnchorSideLeft.Control = chkBand
AnchorSideTop.Control = chkBand
AnchorSideTop.Side = asrBottom
Left = 14
Height = 23
Top = 354
Width = 104
BorderSpacing.Top = 3
Caption = 'Propagation'
TabOrder = 25
end
object chkSatellite: TCheckBox
AnchorSideLeft.Control = chkPropagation
AnchorSideTop.Control = chkPropagation
AnchorSideTop.Side = asrBottom
Left = 14
Height = 23
Top = 380
Width = 80
BorderSpacing.Top = 3
Caption = 'Satellite'
TabOrder = 26
end
object chkContestname: TCheckBox
AnchorSideLeft.Control = chkSatellite
AnchorSideTop.Control = chkSatellite
AnchorSideTop.Side = asrBottom
Left = 14
Height = 23
Top = 406
Width = 119
BorderSpacing.Top = 3
Caption = 'Contest Name'
TabOrder = 27
end
object chkContestNrS: TCheckBox
AnchorSideLeft.Control = chkQSLMsg
AnchorSideTop.Control = chkQSLMsg
AnchorSideTop.Side = asrBottom
Left = 166
Height = 23
Top = 328
Width = 128
BorderSpacing.Top = 3
Caption = 'Contest Nr Sent'
TabOrder = 28
end
object chkContestMsgS: TCheckBox
AnchorSideLeft.Control = chkContestNrS
AnchorSideTop.Control = chkContestNrS
AnchorSideTop.Side = asrBottom
Left = 166
Height = 23
Top = 354
Width = 140
BorderSpacing.Top = 3
Caption = 'Contest Msg Sent'
TabOrder = 29
end
object chkContestNrR: TCheckBox
AnchorSideLeft.Control = chkContestMsgS
AnchorSideTop.Control = chkContestMsgS
AnchorSideTop.Side = asrBottom
Left = 166
Height = 23
Top = 380
Width = 131
BorderSpacing.Top = 3
Caption = 'Contest Nr Rcvd'
TabOrder = 30
end
object chkContestMsgR: TCheckBox
AnchorSideLeft.Control = chkContestNrR
AnchorSideTop.Control = chkContestNrR
AnchorSideTop.Side = asrBottom
Left = 166
Height = 23
Top = 406
Width = 139
BorderSpacing.Top = 3
Caption = 'ContestMsg Rcvd'
TabOrder = 31
end
end
object btnOK: TButton
Left = 432
AnchorSideTop.Control = GroupBox1
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 437
Height = 25
Top = 8
Top = 12
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Right = 18
Caption = 'OK'
OnClick = btnOKClick
TabOrder = 1
end
object btnCancel: TButton
Left = 432
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnOK
AnchorSideTop.Side = asrBottom
Left = 437
Height = 25
Top = 40
Top = 43
Width = 75
BorderSpacing.Top = 6
Cancel = True
Caption = 'Cancel'
ModalResult = 2

View File

@ -14,6 +14,14 @@ type
TfrmQSLExpPref = class(TForm)
btnOK : TButton;
btnCancel : TButton;
chkContestname: TCheckBox;
chkPropagation: TCheckBox;
chkContestNrS: TCheckBox;
chkContestMsgS: TCheckBox;
chkContestNrR: TCheckBox;
chkContestMsgR: TCheckBox;
chkSatellite: TCheckBox;
chkDistance: TCheckBox;
chkQSLMsg : TCheckBox;
chkBand : TCheckBox;
chkAward : TCheckBox;
@ -37,6 +45,7 @@ type
chkTimeOn : TCheckBox;
cbxDateFormat: TComboBox;
GroupBox1 : TGroupBox;
lblDateFormat: TLabel;
tgSplitRST_S: TToggleBox;
tgSplitRST_R: TToggleBox;
procedure btnOKClick(Sender : TObject);
@ -74,29 +83,49 @@ begin
chkName.Checked := cqrini.ReadBool('QSLExport', 'Name', False);
chkQTH.Checked := cqrini.ReadBool('QSLExport', 'QTH', False);
chkBand.Checked := cqrini.ReadBool('QSLExport', 'Band', True);
chkPropagation.Checked := cqrini.ReadBool('QSLExport', 'Propagation', False);
chkSatellite.Checked := cqrini.ReadBool('QSLExport', 'Satellite', False);
chkContestname.Checked := cqrini.ReadBool('QSLExport', 'ContestName', False);
chkQSL_S.Checked := cqrini.ReadBool('QSLExport', 'QSL_S', False);
chkQSL_R.Checked := cqrini.ReadBool('QSLExport', 'QSL_R', False);
chkQSL_VIA.Checked := cqrini.ReadBool('QSLExport', 'QSL_VIA', True);
chkLoc.Checked := cqrini.ReadBool('QSLExport', 'Locator', False);
chkMyLoc.Checked := cqrini.ReadBool('QSLExport', 'MyLoc', False);
chkDistance.Checked := cqrini.ReadBool('QSLExport', 'Distance', False);
chkIOTA.Checked := cqrini.ReadBool('QSLExport', 'IOTA', False);
chkAward.Checked := cqrini.ReadBool('QSLExport', 'Award', False);
chkPower.Checked := cqrini.ReadBool('QSLExport', 'Power', False);
chkRemarks.Checked := cqrini.ReadBool('QSLExport', 'Remarks', True);
chkQSLMsg.Checked := cqrini.ReadBool('QSLExport', 'QSLMsg', True);
chkContestNrS.Checked := cqrini.ReadBool('QSLExport', 'ContestNrS',False );
chkContestMsgS.Checked := cqrini.ReadBool('QSLExport', 'ContestMsgS',False );
chkContestNrR.Checked := cqrini.ReadBool('QSLExport', 'ContestNrR', False);
chkContestMsgR.Checked := cqrini.ReadBool('QSLExport', 'ContestMsgR', False);
tgSplit_Click(Sender);
end;
procedure TfrmQSLExpPref.tgSplit_Click(Sender: TObject);
begin
if tgSplitRST_S.Checked = True then
tgSplitRST_S.Color := clLime
begin
tgSplitRST_S.Font.Color := clGreen;
tgSplitRST_S.Font.Style :=[fsBold];
end
else
tgSplitRST_S.Color := clDefault;
begin
tgSplitRST_S.Font.Color := clDefault;
tgSplitRST_S.Font.Style :=[];
end;
if tgSplitRST_R.Checked = True then
tgSplitRST_R.Color := clLime
begin
tgSplitRST_R.Font.Color := clGreen;
tgSplitRST_R.Font.Style :=[fsBold];
end
else
tgSplitRST_R.Color := clDefault;
begin
tgSplitRST_R.Font.Color := clDefault;
tgSplitRST_R.Font.Style :=[];
end;
end;
procedure TfrmQSLExpPref.btnOKClick(Sender : TObject);
@ -115,16 +144,25 @@ begin
cqrini.WriteBool('QSLExport', 'Name', chkName.Checked);
cqrini.WriteBool('QSLExport', 'QTH', chkQTH.Checked);
cqrini.WriteBool('QSLExport', 'Band', chkBand.Checked);
cqrini.WriteBool('QSLExport', 'Propagation', chkPropagation.Checked);
cqrini.WriteBool('QSLExport', 'Satellite', chkSatellite.Checked);
cqrini.WriteBool('QSLExport', 'ContestName', chkContestname.Checked);
cqrini.WriteBool('QSLExport', 'QSL_S', chkQSL_S.Checked);
cqrini.WriteBool('QSLExport', 'QSL_R', chkQSL_R.Checked);
cqrini.WriteBool('QSLExport', 'QSL_VIA', chkQSL_VIA.Checked);
cqrini.WriteBool('QSLExport', 'Locator', chkLoc.Checked);
cqrini.WriteBool('QSLExport', 'MyLoc', chkMyLoc.Checked);
cqrini.WriteBool('QSLExport', 'Distance', chkDistance.Checked);
cqrini.WriteBool('QSLExport', 'IOTA', chkIOTA.Checked);
cqrini.WriteBool('QSLExport', 'Award', chkAward.Checked);
cqrini.WriteBool('QSLExport', 'Power', chkPower.Checked);
cqrini.WriteBool('QSLExport', 'Remarks', chkRemarks.Checked);
cqrini.WriteBool('QSLExport', 'QSLMsg', chkQSLMsg.Checked);
cqrini.WriteBool('QSLExport', 'ContestNrS', chkContestNrS.Checked);
cqrini.WriteBool('QSLExport', 'ContestMsgS', chkContestMsgS.Checked);
cqrini.WriteBool('QSLExport', 'ContestNrR', chkContestNrR.Checked);
cqrini.WriteBool('QSLExport', 'ContestMsgR', chkContestMsgR.Checked);
cqrini.SaveToDisk;
ModalResult := mrOK
end;

View File

@ -285,8 +285,11 @@ begin
HTTP.MimeType := 'multipart/form-data; boundary=' + Bound;
//eQSL server can handle only 1000QSO per minute
HTTP.Timeout := 100000*((QSOCount div 1000)+1);
Writeln('Timeout:',HTTP.Timeout div 1000, 's');
Writeln('QSO count:',QSOCount);
if dmData.DebugLevel>=1 then
begin
Writeln('Timeout:',HTTP.Timeout div 1000, 's');
Writeln('QSO count:',QSOCount);
end;
Result := HTTP.HTTPMethod('POST', URL);
if Result then
ResultData.LoadFromStream(HTTP.Document)

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,11 @@ type
{ TfraExportPref }
TfraExportPref = class(TFrame)
chkexContest: TCheckBox;
chkAutoColumn: TCheckBox;
chkexContestName: TCheckBox;
chkexContestMsg: TCheckBox;
chkexContestNr: TCheckBox;
chkexDistance: TCheckBox;
chkExRXFreq : TCheckBox;
chkExSat : TCheckBox;
chkExPropagation : TCheckBox;
@ -54,6 +58,36 @@ type
chkexWAZ : TCheckBox;
chkProfile : TCheckBox;
chkAscTime : TCheckBox;
edtWAward1: TEdit;
edtWCall1: TEdit;
edtWContestMsg1: TEdit;
edtWContestName1: TEdit;
edtWContestNr1: TEdit;
edtWCounty1: TEdit;
edtWDistance1: TEdit;
edtWDXCC1: TEdit;
edtWeQSLR1: TEdit;
edtWeQSLRDate1: TEdit;
edtWeQSLS1: TEdit;
edtWeQSLSDate1: TEdit;
edtWIOTA1: TEdit;
edtWITU1: TEdit;
edtWLoc1: TEdit;
edtWLQSLR1: TEdit;
edtWLQSLRDate1: TEdit;
edtWLQSLS1: TEdit;
edtWLQSLSDate1: TEdit;
edtWMyLoc1: TEdit;
edtWNote1: TEdit;
edtWPower1: TEdit;
edtWProfile: TEdit;
edtWContinent1: TEdit;
edtWProfile1: TEdit;
edtWDate1: TEdit;
edtWDistance: TEdit;
edtWFreq1: TEdit;
edtWMode1: TEdit;
edtWName1: TEdit;
edtWProp : TEdit;
edtWAward : TEdit;
edtWCall : TEdit;
@ -77,7 +111,22 @@ type
edtWName : TEdit;
edtWNote : TEdit;
edtWPower : TEdit;
edtWContestName: TEdit;
edtWContestNr: TEdit;
edtWContestMsg: TEdit;
edtWProp1: TEdit;
edtWQSLR1: TEdit;
edtWQSLRDate1: TEdit;
edtWQSLS1: TEdit;
edtWQSLSDate1: TEdit;
edtWQSLVIA1: TEdit;
edtWQTH1: TEdit;
edtWRemarks1: TEdit;
edtWRstR1: TEdit;
edtWRstS1: TEdit;
edtWRxFreq : TEdit;
edtWContinent: TEdit;
edtWRxFreq1: TEdit;
edtWSatName : TEdit;
edtWQSLR : TEdit;
edtWQSLRDate : TEdit;
@ -88,22 +137,38 @@ type
edtWRemarks : TEdit;
edtWRstR : TEdit;
edtWRstS : TEdit;
edtWSatName1: TEdit;
edtWState : TEdit;
edtWState1: TEdit;
edtWTimeOff : TEdit;
edtWTimeOff1: TEdit;
edtWTimeOn : TEdit;
edtWTimeOn1: TEdit;
edtWWAZ : TEdit;
Label46 : TLabel;
Label47 : TLabel;
Label48 : TLabel;
Label49 : TLabel;
Label50 : TLabel;
Label51 : TLabel;
edtWWAZ1: TEdit;
lblField1 : TLabel;
lblField2 : TLabel;
lblField3 : TLabel;
lblWidth1 : TLabel;
lblWidth2 : TLabel;
lblWidth3 : TLabel;
lblHTML1: TLabel;
lblHTML2: TLabel;
lblHTML3: TLabel;
private
{ private declarations }
public
procedure SaveExportPref;
procedure LoadExportPref;
end;
{
NOTE !!!
If you update any component property of this frame (.lfm), but do not add or remove any component,
changes do not update to inheriting form(s).
Only 100% sure way to update all to inheriting form is to delete frame from form and then add it
again with lazarus GUI toolbar "form" button. When this is done all form actions linked to frame components
are lost and they must be relinked again manually.
}
implementation
{$R *.lfm}
@ -127,6 +192,7 @@ begin
cqrini.WriteBool('Export', 'QSL_VIA', chkexQSLVIA.Checked);
cqrini.WriteBool('Export', 'Locator', chkexLoc.Checked);
cqrini.WriteBool('Export', 'MyLoc', chkexMyLoc.Checked);
cqrini.WriteBool('Export', 'Distance', chkexDistance.Checked);
cqrini.WriteBool('Export', 'IOTA', chkexIOTA.Checked);
cqrini.WriteBool('Export', 'Award', chkexAward.Checked);
cqrini.WriteBool('Export', 'County', chkexCounty.Checked);
@ -142,7 +208,7 @@ begin
cqrini.WriteBool('Export', 'LQSLSDate', chkexLQSLSDate.Checked);
cqrini.WriteBool('Export', 'LQSLR', chkexLQSLR.Checked);
cqrini.WriteBool('Export', 'LQSLRDate', chkexLQSLRDate.Checked);
cqrini.WriteBool('Export', 'Cont', chkExCont.Checked);
cqrini.WriteBool('Export', 'Continent', chkExCont.Checked);
cqrini.WriteBool('Export', 'QSLSDate', chkexQSLSDate.Checked);
cqrini.WriteBool('Export', 'QSLRDate', chkexQSLRDate.Checked);
cqrini.WriteBool('Export', 'eQSLS', chkexeQSLS.Checked);
@ -153,8 +219,12 @@ begin
cqrini.WriteBool('Export', 'Prop', chkExPropagation.Checked);
cqrini.WriteBool('Export', 'RxFreq', chkExRXFreq.Checked);
cqrini.WriteBool('Export', 'SatName', chkExSat.Checked);
cqrini.WriteBool('Export', 'Contest', chkexContest.Checked);
cqrini.WriteBool('Export', 'Contestname', chkexContestName.Checked);
cqrini.WriteBool('Export', 'ContestNr', chkexContestNr.Checked);
cqrini.WriteBool('Export', 'ContestMsg', chkexContestMsg.Checked);
cqrini.WriteBool('Export', 'HTMLAutoColumn', chkAutoColumn.Checked);
//group "none"
cqrini.WriteString('Export', 'WDate', edtWDate.Text);
cqrini.WriteString('Export', 'Wtime_on', edtWTimeOn.Text);
cqrini.WriteString('Export', 'Wtime_off', edtWTimeOff.Text);
@ -170,6 +240,7 @@ begin
cqrini.WriteString('Export', 'WQSL_VIA', edtWQSLVIA.Text);
cqrini.WriteString('Export', 'WLocator', edtWLoc.Text);
cqrini.WriteString('Export', 'WMyLoc', edtWMyLoc.Text);
cqrini.WriteString('Export', 'WDistance', edtWDistance.Text);
cqrini.WriteString('Export', 'WIOTA', edtWIOTA.Text);
cqrini.WriteString('Export', 'WAward', edtWAward.Text);
cqrini.WriteString('Export', 'WCounty', edtWCounty.Text);
@ -193,6 +264,101 @@ begin
cqrini.WriteString('Export', 'WProp', edtWProp.Text);
cqrini.WriteString('Export', 'WRxFreq', edtWRxFreq.Text);
cqrini.WriteString('Export', 'WSatName', edtWSatName.Text);
cqrini.WriteString('Export', 'WContinent', edtWContinent.Text);
cqrini.WriteString('Export', 'WProfile', edtWProfile.Text);
cqrini.WriteString('Export', 'WContestName', edtWContestName.Text);
cqrini.WriteString('Export', 'WContestNr', edtWContestNr.Text);
cqrini.WriteString('Export', 'WContestMsg', edtWContestMsg.Text);
cqrini.WriteString('Export', 'WDate', edtWDate.Text);
cqrini.WriteString('Export', 'Wtime_on', edtWTimeOn.Text);
cqrini.WriteString('Export', 'Wtime_off', edtWTimeOff.Text);
cqrini.WriteString('Export', 'WCallSign', edtWCall.Text);
cqrini.WriteString('Export', 'WMode', edtWMode.Text);
cqrini.WriteString('Export', 'WFreq', edtWFreq.Text);
cqrini.WriteString('Export', 'WRST_S', edtWRstS.Text);
cqrini.WriteString('Export', 'WRST_R', edtWRstR.Text);
cqrini.WriteString('Export', 'WName', edtWName.Text);
cqrini.WriteString('Export', 'WQTH', edtWQTH.Text);
cqrini.WriteString('Export', 'WQSL_S', edtWQSLS.Text);
cqrini.WriteString('Export', 'WQSL_R', edtWQSLR.Text);
cqrini.WriteString('Export', 'WQSL_VIA', edtWQSLVIA.Text);
cqrini.WriteString('Export', 'WLocator', edtWLoc.Text);
cqrini.WriteString('Export', 'WMyLoc', edtWMyLoc.Text);
cqrini.WriteString('Export', 'WDistance', edtWDistance.Text);
cqrini.WriteString('Export', 'WIOTA', edtWIOTA.Text);
cqrini.WriteString('Export', 'WAward', edtWAward.Text);
cqrini.WriteString('Export', 'WCounty', edtWCounty.Text);
cqrini.WriteString('Export', 'WPower', edtWPower.Text);
cqrini.WriteString('Export', 'WDXCC', edtWDXCC.Text);
cqrini.WriteString('Export', 'WRemarks', edtWRemarks.Text);
cqrini.WriteString('Export', 'WWAZ', edtWWAZ.Text);
cqrini.WriteString('Export', 'WITU', edtWITU.Text);
cqrini.WriteString('Export', 'WNote', edtWNote.Text);
cqrini.WriteString('Export', 'WState', edtWState.Text);
cqrini.WriteString('Export', 'WLQSLS', edtWLQSLS.Text);
cqrini.WriteString('Export', 'WLQSLSDate', edtWLQSLSDate.Text);
cqrini.WriteString('Export', 'WLQSLR', edtWLQSLR.Text);
cqrini.WriteString('Export', 'WLQSLRDate', edtWLQSLRDate.Text);
cqrini.WriteString('Export', 'WQSLSDate', edtWQSLSDate.Text);
cqrini.WriteString('Export', 'WQSLRDate', edtWQSLRDate.Text);
cqrini.WriteString('Export', 'WeQSLS', edtWeQSLS.Text);
cqrini.WriteString('Export', 'WeQSLSDate', edtWeQSLSDate.Text);
cqrini.WriteString('Export', 'WeQSLR', edtWeQSLR.Text);
cqrini.WriteString('Export', 'WeQSLRDate', edtWeQSLRDate.Text);
cqrini.WriteString('Export', 'WProp', edtWProp.Text);
cqrini.WriteString('Export', 'WRxFreq', edtWRxFreq.Text);
cqrini.WriteString('Export', 'WSatName', edtWSatName.Text);
cqrini.WriteString('Export', 'WContinent', edtWContinent.Text);
cqrini.WriteString('Export', 'WProfile', edtWProfile.Text);
cqrini.WriteString('Export', 'WContestName', edtWContestName.Text);
cqrini.WriteString('Export', 'WContestNr', edtWContestNr.Text);
cqrini.WriteString('Export', 'WContestMsg', edtWContestMsg.Text);
//group "one"
cqrini.WriteString('Export', 'WDate1', edtWDate1.Text);
cqrini.WriteString('Export', 'Wtime_on1', edtWTimeOn1.Text);
cqrini.WriteString('Export', 'Wtime_off1', edtWTimeOff1.Text);
cqrini.WriteString('Export', 'WCallSign1', edtWCall1.Text);
cqrini.WriteString('Export', 'WMode1', edtWMode1.Text);
cqrini.WriteString('Export', 'WFreq1', edtWFreq1.Text);
cqrini.WriteString('Export', 'WRST_S1', edtWRstS1.Text);
cqrini.WriteString('Export', 'WRST_R1', edtWRstR1.Text);
cqrini.WriteString('Export', 'WName1', edtWName1.Text);
cqrini.WriteString('Export', 'WQTH1', edtWQTH1.Text);
cqrini.WriteString('Export', 'WQSL_S1', edtWQSLS1.Text);
cqrini.WriteString('Export', 'WQSL_R1', edtWQSLR1.Text);
cqrini.WriteString('Export', 'WQSL_VIA1', edtWQSLVIA1.Text);
cqrini.WriteString('Export', 'WLocator1', edtWLoc1.Text);
cqrini.WriteString('Export', 'WMyLoc1', edtWMyLoc1.Text);
cqrini.WriteString('Export', 'WDistance1', edtWDistance1.Text);
cqrini.WriteString('Export', 'WIOTA1', edtWIOTA1.Text);
cqrini.WriteString('Export', 'WAward1', edtWAward1.Text);
cqrini.WriteString('Export', 'WCounty1', edtWCounty1.Text);
cqrini.WriteString('Export', 'WPower1', edtWPower1.Text);
cqrini.WriteString('Export', 'WDXCC1', edtWDXCC1.Text);
cqrini.WriteString('Export', 'WRemarks1', edtWRemarks1.Text);
cqrini.WriteString('Export', 'WWAZ1', edtWWAZ1.Text);
cqrini.WriteString('Export', 'WITU1', edtWITU1.Text);
cqrini.WriteString('Export', 'WNote1', edtWNote1.Text);
cqrini.WriteString('Export', 'WState1', edtWState1.Text);
cqrini.WriteString('Export', 'WLQSLS1', edtWLQSLS1.Text);
cqrini.WriteString('Export', 'WLQSLSDate1', edtWLQSLSDate1.Text);
cqrini.WriteString('Export', 'WLQSLR1', edtWLQSLR1.Text);
cqrini.WriteString('Export', 'WLQSLRDate1', edtWLQSLRDate1.Text);
cqrini.WriteString('Export', 'WQSLSDate1', edtWQSLSDate1.Text);
cqrini.WriteString('Export', 'WQSLRDate1', edtWQSLRDate1.Text);
cqrini.WriteString('Export', 'WeQSLS1', edtWeQSLS1.Text);
cqrini.WriteString('Export', 'WeQSLSDate1', edtWeQSLSDate1.Text);
cqrini.WriteString('Export', 'WeQSLR1', edtWeQSLR1.Text);
cqrini.WriteString('Export', 'WeQSLRDate1', edtWeQSLRDate1.Text);
cqrini.WriteString('Export', 'WProp1', edtWProp1.Text);
cqrini.WriteString('Export', 'WRxFreq1', edtWRxFreq1.Text);
cqrini.WriteString('Export', 'WSatName1', edtWSatName1.Text);
cqrini.WriteString('Export', 'WContinent1', edtWContinent1.Text);
cqrini.WriteString('Export', 'WProfile1', edtWProfile1.Text);
cqrini.WriteString('Export', 'WContestName1', edtWContestName1.Text);
cqrini.WriteString('Export', 'WContestNr1', edtWContestNr1.Text);
cqrini.WriteString('Export', 'WContestMsg1', edtWContestMsg1.Text);
end;
procedure TfraExportPref.LoadExportPref;
@ -212,6 +378,7 @@ begin
chkexQSLVIA.Checked := cqrini.ReadBool('Export', 'QSL_VIA', True);
chkexLoc.Checked := cqrini.ReadBool('Export', 'Locator', False);
chkexMyLoc.Checked := cqrini.ReadBool('Export', 'MyLoc', False);
chkexDistance.Checked := cqrini.ReadBool('Export', 'Distance', False);
chkexIOTA.Checked := cqrini.ReadBool('Export', 'IOTA', False);
chkexAward.Checked := cqrini.ReadBool('Export', 'Award', False);
chkexCounty.Checked := cqrini.ReadBool('Export', 'County', False);
@ -227,7 +394,7 @@ begin
chkexLQSLSDate.Checked := cqrini.ReadBool('Export', 'LQSLSDate', False);
chkexLQSLR.Checked := cqrini.ReadBool('Export', 'LQSLR', False);
chkexLQSLRDate.Checked := cqrini.ReadBool('Export', 'LQSLRDate', False);
chkExCont.Checked := cqrini.ReadBool('Export', 'Cont', False);
chkExCont.Checked := cqrini.ReadBool('Export', 'Continent', False);
chkexQSLSDate.Checked := cqrini.ReadBool('Export', 'QSLSDate', False);
chkexQSLRDate.Checked := cqrini.ReadBool('Export', 'QSLRDate', False);
chkexeQSLS.Checked := cqrini.ReadBool('Export', 'eQSLS', False);
@ -238,47 +405,104 @@ begin
chkExPropagation.Checked := cqrini.ReadBool('Export', 'Prop', False);
chkExRXFreq.Checked := cqrini.ReadBool('Export', 'RxFreq', False);
chkExSat.Checked := cqrini.ReadBool('Export', 'SatName', False);
chkexContest.Checked := cqrini.ReadBool('Export', 'Contest', False);
chkexContestName.Checked := cqrini.ReadBool('Export', 'Contestname', False);
chkexContestNr.Checked := cqrini.ReadBool('Export', 'ContestNr',False);
chkexContestMsg.Checked := cqrini.ReadBool('Export', 'ContestMsg', False);
chkAutoColumn.Checked := cqrini.ReadBool('Export', 'HTMLAutoColumn', False);
edtWDate.Text := cqrini.ReadString('Export', 'WDate', '50');
edtWTimeOn.Text := cqrini.ReadString('Export', 'Wtime_on', '50');
edtWTimeOff.Text := cqrini.ReadString('Export', 'Wtime_off', '50');
edtWCall.Text := cqrini.ReadString('Export', 'WCallSign', '50');
edtWMode.Text := cqrini.ReadString('Export', 'WMode', '50');
edtWFreq.Text := cqrini.ReadString('Export', 'WFreq', '50');
edtWRstS.Text := cqrini.ReadString('Export', 'WRST_S', '50');
edtWRstR.Text := cqrini.ReadString('Export', 'WRST_R', '30');
edtWName.Text := cqrini.ReadString('Export', 'WName', '50');
edtWQTH.Text := cqrini.ReadString('Export', 'WQTH', '80');
edtWQSLS.Text := cqrini.ReadString('Export', 'WQSL_S', '10');
edtWQSLR.Text := cqrini.ReadString('Export', 'WQSL_R', '10');
edtWQSLVIA.Text := cqrini.ReadString('Export', 'WQSL_VIA', '20');
edtWLoc.Text := cqrini.ReadString('Export', 'WLocator', '30');
edtWMyLoc.Text := cqrini.ReadString('Export', 'WMyLoc', '30');
edtWIOTA.Text := cqrini.ReadString('Export', 'WIOTA', '40');
edtWAward.Text := cqrini.ReadString('Export', 'WAward', '40');
edtWCounty.Text := cqrini.ReadString('Export', 'WCounty', '40');
edtWPower.Text := cqrini.ReadString('Export', 'WPower', '40');
edtWDXCC.Text := cqrini.ReadString('Export', 'WDXCC', '40');
//group "none"
edtWDate.Text := cqrini.ReadString('Export', 'WDate', '10');
edtWTimeOn.Text := cqrini.ReadString('Export', 'Wtime_on', '5');
edtWTimeOff.Text := cqrini.ReadString('Export', 'Wtime_off', '5');
edtWCall.Text := cqrini.ReadString('Export', 'WCallSign', '10');
edtWMode.Text := cqrini.ReadString('Export', 'WMode', '6');
edtWFreq.Text := cqrini.ReadString('Export', 'WFreq', '10');
edtWRstS.Text := cqrini.ReadString('Export', 'WRST_S', '4');
edtWRstR.Text := cqrini.ReadString('Export', 'WRST_R', '4');
edtWName.Text := cqrini.ReadString('Export', 'WName', '20');
edtWQTH.Text := cqrini.ReadString('Export', 'WQTH', '20');
edtWQSLS.Text := cqrini.ReadString('Export', 'WQSL_S', '2');
edtWQSLR.Text := cqrini.ReadString('Export', 'WQSL_R', '2');
edtWQSLVIA.Text := cqrini.ReadString('Export', 'WQSL_VIA', '10');
edtWLoc.Text := cqrini.ReadString('Export', 'WLocator', '6');
edtWMyLoc.Text := cqrini.ReadString('Export', 'WMyLoc', '6');
edtWDistance.Text := cqrini.ReadString('Export', 'WDistance', '5');
edtWIOTA.Text := cqrini.ReadString('Export', 'WIOTA', '7');
edtWAward.Text := cqrini.ReadString('Export', 'WAward', '10');
edtWCounty.Text := cqrini.ReadString('Export', 'WCounty', '10');
edtWPower.Text := cqrini.ReadString('Export', 'WPower', '4');
edtWDXCC.Text := cqrini.ReadString('Export', 'WDXCC', '4');
edtWRemarks.Text := cqrini.ReadString('Export', 'WRemarks', '100');
edtWWAZ.Text := cqrini.ReadString('Export', 'WWAZ', '20');
edtWITU.Text := cqrini.ReadString('Export', 'WITU', '20');
edtWNote.Text := cqrini.ReadString('Export', 'WNote', '40');
edtWState.Text := cqrini.ReadString('Export', 'WState', '40');
edtWLQSLS.Text := cqrini.ReadString('Export', 'WLQSLS', '50');
edtWLQSLSDate.Text := cqrini.ReadString('Export', 'WLQSLSDate', '50');
edtWLQSLR.Text := cqrini.ReadString('Export', 'WLQSLR', '50');
edtWLQSLRDate.Text := cqrini.ReadString('Export', 'WLQSLRDate', '50');
edtWQSLSDate.Text := cqrini.ReadString('Export', 'WQSLSDate', '50');
edtWQSLRDate.Text := cqrini.ReadString('Export', 'WQSLRDate', '50');
edtWeQSLS.Text := cqrini.ReadString('Export', 'WeQSLS', '50');
edtWeQSLSDate.Text := cqrini.ReadString('Export', 'WeQSLSDate', '50');
edtWeQSLR.Text := cqrini.ReadString('Export', 'WeQSLR', '50');
edtWeQSLRDate.Text := cqrini.ReadString('Export', 'WeQSLRDate', '50');
edtWProp.Text := cqrini.ReadString('Export', 'WProp', '50');
edtWRxFreq.Text := cqrini.ReadString('Export', 'WRxFreq', '50');
edtWSatName.Text := cqrini.ReadString('Export', 'WSatName', '50')
edtWWAZ.Text := cqrini.ReadString('Export', 'WWAZ', '3');
edtWITU.Text := cqrini.ReadString('Export', 'WITU', '3');
edtWNote.Text := cqrini.ReadString('Export', 'WNote', '50');
edtWState.Text := cqrini.ReadString('Export', 'WState', '10');
edtWLQSLS.Text := cqrini.ReadString('Export', 'WLQSLS', '2');
edtWLQSLSDate.Text := cqrini.ReadString('Export', 'WLQSLSDate', '10');
edtWLQSLR.Text := cqrini.ReadString('Export', 'WLQSLR', '2');
edtWLQSLRDate.Text := cqrini.ReadString('Export', 'WLQSLRDate', '10');
edtWQSLSDate.Text := cqrini.ReadString('Export', 'WQSLSDate', '10');
edtWQSLRDate.Text := cqrini.ReadString('Export', 'WQSLRDate', '10');
edtWeQSLS.Text := cqrini.ReadString('Export', 'WeQSLS', '2');
edtWeQSLSDate.Text := cqrini.ReadString('Export', 'WeQSLSDate', '10');
edtWeQSLR.Text := cqrini.ReadString('Export', 'WeQSLR', '2');
edtWeQSLRDate.Text := cqrini.ReadString('Export', 'WeQSLRDate', '10');
edtWProp.Text := cqrini.ReadString('Export', 'WProp', '6');
edtWRxFreq.Text := cqrini.ReadString('Export', 'WRxFreq', '10');
edtWSatName.Text := cqrini.ReadString('Export', 'WSatName', '10');
edtWContinent.Text := cqrini.ReadString('Export', 'WContinent', '2');
edtWProfile.Text := cqrini.ReadString('Export', 'WProfile', '20');
edtWContestName.Text := cqrini.ReadString('Export', 'WContestName', '20');
edtWContestNr.Text := cqrini.ReadString('Export', 'WContestNr', '4');
edtWContestMsg.Text := cqrini.ReadString('Export', 'WContestMsg', '10');
//group "one"
edtWDate1.Text := cqrini.ReadString('Export', 'WDate1', 'Date');
edtWTimeOn1.Text := cqrini.ReadString('Export', 'Wtime_on1', 'Time on');
edtWTimeOff1.Text := cqrini.ReadString('Export', 'Wtime_off1', 'Time off');
edtWCall1.Text := cqrini.ReadString('Export', 'WCallSign1', 'Call');
edtWMode1.Text := cqrini.ReadString('Export', 'WMode1', 'Mode');
edtWFreq1.Text := cqrini.ReadString('Export', 'WFreq1', 'Freq');
edtWRstS1.Text := cqrini.ReadString('Export', 'WRST_S1', 'RSTs');
edtWRstR1.Text := cqrini.ReadString('Export', 'WRST_R1', 'RSTr');
edtWName1.Text := cqrini.ReadString('Export', 'WName1', 'Name');
edtWQTH1.Text := cqrini.ReadString('Export', 'WQTH1', 'QTH');
edtWQSLS1.Text := cqrini.ReadString('Export', 'WQSL_S1', 'QSLs');
edtWQSLR1.Text := cqrini.ReadString('Export', 'WQSL_R1', 'QSLr');
edtWQSLVIA1.Text := cqrini.ReadString('Export', 'WQSL_VIA1', 'QSL via');
edtWLoc1.Text := cqrini.ReadString('Export', 'WLocator1', 'Loc');
edtWMyLoc1.Text := cqrini.ReadString('Export', 'WMyLoc1', 'MyLoc');
edtWDistance1.Text := cqrini.ReadString('Export', 'WDistance1', 'QRB');
edtWIOTA1.Text := cqrini.ReadString('Export', 'WIOTA1', 'IOTA');
edtWAward1.Text := cqrini.ReadString('Export', 'WAward1', 'Award');
edtWCounty1.Text := cqrini.ReadString('Export', 'WCounty1', 'County');
edtWPower1.Text := cqrini.ReadString('Export', 'WPower1', 'Pwr');
edtWDXCC1.Text := cqrini.ReadString('Export', 'WDXCC1', 'DXCC');
edtWRemarks1.Text := cqrini.ReadString('Export', 'WRemarks1', 'Cmnt');
edtWWAZ1.Text := cqrini.ReadString('Export', 'WWAZ1', 'WAZ');
edtWITU1.Text := cqrini.ReadString('Export', 'WITU1', 'ITU');
edtWNote1.Text := cqrini.ReadString('Export', 'WNote1', 'Note');
edtWState1.Text := cqrini.ReadString('Export', 'WState1', 'State');
edtWLQSLS1.Text := cqrini.ReadString('Export', 'WLQSLS1', 'LQSLs');
edtWLQSLSDate1.Text := cqrini.ReadString('Export', 'WLQSLSDate1', 'LQSLSdat');
edtWLQSLR1.Text := cqrini.ReadString('Export', 'WLQSLR1', 'LQSLr');
edtWLQSLRDate1.Text := cqrini.ReadString('Export', 'WLQSLRDate1', 'LQSLRdat');
edtWQSLSDate1.Text := cqrini.ReadString('Export', 'WQSLSDate1', 'QSLSdat');
edtWQSLRDate1.Text := cqrini.ReadString('Export', 'WQSLRDate1', 'QSLRdat');
edtWeQSLS1.Text := cqrini.ReadString('Export', 'WeQSLS1', 'eQSLs');
edtWeQSLSDate1.Text := cqrini.ReadString('Export', 'WeQSLSDate1', 'eQSLSdat');
edtWeQSLR1.Text := cqrini.ReadString('Export', 'WeQSLR1', 'eQSLr');
edtWeQSLRDate1.Text := cqrini.ReadString('Export', 'WeQSLRDate1', 'eQSLRdat');
edtWProp1.Text := cqrini.ReadString('Export', 'WProp1', 'Propag');
edtWRxFreq1.Text := cqrini.ReadString('Export', 'WRxFreq1', 'RX Freq');
edtWSatName1.Text := cqrini.ReadString('Export', 'WSatName1', 'Satellite');
edtWContinent1.Text := cqrini.ReadString('Export', 'WContinent1', 'Contin');
edtWProfile1.Text := cqrini.ReadString('Export', 'WProfile1', 'Profile');
edtWContestName1.Text := cqrini.ReadString('Export', 'WContestName1', 'Contest');
edtWContestNr1.Text := cqrini.ReadString('Export', 'WContestNr1', 'Cont Nr');
edtWContestMsg1.Text := cqrini.ReadString('Export', 'WContestMsg1', 'Cont Msg');
end;
end.

View File

@ -49,7 +49,9 @@ begin
InitCriticalSection(crit);
fIniFileName := IniFile;
ini := TMemIniFile.Create(IniFile);
lini := TMemIniFile.Create(LocalIniFile)
lini := TMemIniFile.Create(LocalIniFile);
ini.CacheUpdates :=false; //should be as default, but is it?
lini.CacheUpdates :=false;
end;
function TMyIni.ReadString(const Section, Ident, Default: string): string;

View File

@ -9,7 +9,7 @@ const
cMINOR = 3;
cRELEAS = 0;
cBUILD = 3;
cBUILD_DATE = '2019-08-21';
cBUILD_DATE = '2019-09-30';
implementation