This is a big update.

Thanks for Andreas, Dl7OAP, for his great help. Without his help, this would not have been done.
        Here are the main parts:

        -Fix: Table freqmem update should now work with both MySql and MariDb and take account that beta
              testers may already have column "info" in their freqmem db.

        -Add: Wsjtx monitor now handles new FT4 mode properly
        -Add: N1MM remote now makes Qrz/HamQth search during logging. With slow internet connections it minght fail,
              but at least it adds zone/DXCC information that comes from cqrlog itself.
        -Add: Qso list/filter remembers last used settings if checked to "remember". No need to set all again
              from beginning if there was small error in filter design at first try.
              Pressing OK saves settings. Clear filter-button clears filter and pressing OK after that
              shows again all qsos.
        -Add: New columns for contest exchange and freqmem info upgrades database to version 16
              All corresponding views (contest, qso list,NewQso,ADIF ex/Import,TRXControl,log filter) updated
              to use new columns.
               --Some new CW macros.
        -Add: Contest form has simple dupe check. Call turning red after leaving call edit box if worked at same
                band and mode. Needs new log for each contest, or if same log used for all, setting date and
	    cehckbox of "preferences/fldigi/wsjtx interface"-"WB4 chk starts from"-"call"-"contest start date"
        -Add: Qso list has now all contest columns (set by preferences/visble columns)
        -Add: ADIF export and import can handle contest tags.(Select in "Choose fields to export").
        -Add: Qso list/filter has now contest related search columns, too.
        -Fix: CQ-monitor: Follow call editing resulted right to left typing order for letters (not for numbers).
              Now all restored to left-to-right order.
        -FiX: Help files updated.Squashed commit of the following:

commit ff0493923fbe083ceed1265373abba9834f86f66
Author: OH1KH <oh1kh@sral.fi>
Date:   Thu May 2 19:53:05 2019 +0300

    final checks

commit 7b5438b03b03f60436ddd413c86b269125302781
Author: Andreas Puschendorf
Date:   Thu May 2 14:41:50 2019 +0200

    Squashed commit of the following:

    commit deb341af57da0eaaff6ab9d2d476a353c9216de1
    Merge: 2f64d72 4e34f1e
    Author: Andreas Puschendorf
    Date:   Thu May 2 14:34:05 2019 +0200

        Merge branch 'master' into integrationOfNewContestDbFieldsInGui

    commit 2f64d720bc644fa27cc4d6cd102792afd70c7950
    Author: Andreas Puschendorf
    Date:   Thu May 2 14:28:32 2019 +0200

        Revert "improved the update script for field info in table freqmem"

        This reverts commit 8d5384819ab0995985e3b79e3c60daabda749b6a.

    commit 33f29036387bdc602e4be853f8b9058985f339e4
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 30 22:02:12 2019 +0200

        refactor adif in fMonWsjtx.pas

    commit b6ec5eb7fdf4b1140de1b664c2eaa5a6e2479ff3
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 30 17:51:53 2019 +0300

        period timer for FT4

    commit 634cca519f9236f52c7d1be31588d93a85f32245
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 30 17:10:23 2019 +0300

        FT4 mode timers

    commit 59c4b3a0f903665c59686a9f05726173e448ccd0
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 30 16:46:50 2019 +0300

        FT4 mode letter

    commit 7d8415a8c6ea081e561f0766db307daa4519ab8c
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sun Apr 28 10:31:16 2019 +0300

        Fixed addRadioMemory form tabulation order

    commit b5f64426e3669f3048b8d22ff98b64f3fdab6b9a
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 26 13:38:01 2019 +0300

        added qrz/hamqth info fetch to n1mm remote

    commit 21ab222aee20b515a688d45b48552446a6dd9bcf
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Thu Apr 25 20:50:26 2019 +0300

        Moved View/Edit close from contest/btSave to contest/edtCallExit

    commit 957ab8d820f14d414b51bd83fa65a40fd5f16f3e
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Wed Apr 24 13:30:13 2019 +0300

        Added contest + other tags to n1mm remote

    commit d2b444f9ed42197642c6f44b7b7c8062e950eb0d
    Merge: 80bc124 bb24e96
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 23 09:05:59 2019 +0300

        Merge branch 'integrationOfNewContestDbFieldsInGui' of github.com:OH1KH/cqrlog into integrationOfNewContestDbFieldsInGui

    commit 80bc124aa83fe59b1c0252e88d6d4ce560e44575
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 23 09:05:40 2019 +0300

        New mode FT4 added to utils, monwsjtx sill needs mode letter

    commit bb24e969a9939369a21d9143fc06509959f0bc5f
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 22 22:09:22 2019 +0200

        correct encoding and directory of ContestName.tab

    commit 0b75cbb804287757a27dfc58fa3b0379ad070528
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Mon Apr 22 18:55:06 2019 +0300

        small help addition

    commit 81136fc576513822fea97e41f0ec1a5e6912b75a
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Mon Apr 22 11:35:44 2019 +0300

        revert frmContest/contestname|description to combobox

    commit f016409b0548b7f159d914233c2c3862ff418b9b
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Mon Apr 22 09:25:04 2019 +0300

        reverted ContestName.tab path to root. Added chkRemember to filter. Fixed filter help.

    commit 8c9079c9e89c89724270ed53364c3a01bc15808d
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sun Apr 21 21:12:53 2019 +0200

        fix bug when contest qso is not saved due to viewmode or editmode of newqso-form

    commit 25c4fdd8b67388c5e56da519f7ff3f605facbb01
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sun Apr 21 13:06:06 2019 +0200

        Revert "call dupe check in contest gui only in the last 2 days of log"

        This reverts commit 692e7e8c60a3ca5dffb774b2f6adc053ee3358ac.

    commit ea485ac4c5d6280680a2c10e4b0766348e38e39f
    Merge: 409cc68 083be1e
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sun Apr 21 10:16:07 2019 +0300

        Merge branch 'integrationOfNewContestDbFieldsInGui' of github.com:OH1KH/cqrlog into integrationOfNewContestDbFieldsInGui

        pulled

    commit 409cc68b1c79dddb895cb7540368e4f7480df676
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sun Apr 21 10:15:14 2019 +0300

        Fixed contestname.tab loading in filter and contest forms

    commit 083be1ef8fdb1a7d4f79647b6ea1c4ec47ab0a89
    Merge: 692e7e8 c99c21b
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sun Apr 21 09:05:38 2019 +0200

        Merge branch 'master' into integrationOfNewContestDbFieldsInGui

    commit 692e7e8c60a3ca5dffb774b2f6adc053ee3358ac
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Apr 20 23:01:32 2019 +0200

        call dupe check in contest gui only in the last 2 days of log

    commit 384629cc0b6d49762b563a057747470177716959
    Merge: 4e778ea 585d704
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Apr 20 21:44:12 2019 +0200

        Merge branch 'integrationOfNewContestDbFieldsInGui' of https://github.com/OH1KH/cqrlog into integrationOfNewContestDbFieldsInGui

    commit 4e778ea28ed9e4d72bc7bbbfa358eb1ad8c159b7
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Apr 20 21:43:54 2019 +0200

        add colum autosize to form fsqlconsole and fmain

    commit 2758e20fbe191b396579a9dda0465fe820726d04
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Apr 20 19:37:50 2019 +0200

        add ContestName.tab to lastupgradecheck

    commit 585d70499e5344cda890d00ca122749309347669
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sat Apr 20 19:52:25 2019 +0300

        Updated some help files

    commit cab588b93c8c8d3180acf5ebec9d6ce19fd54f03
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Fri Apr 19 21:00:30 2019 +0200

        add sat_name.tab and prop_mode.tab to lastupgradecheck. new sat_name.tab in tar file leads to cty.tar download every app start

    commit d7c1c729aec75606f1c96e0b2d9331a25e4d1e7a
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Fri Apr 19 20:31:49 2019 +0200

        add some mouse over text in filter gui and move complete msg out of the way of filepath

    commit 008edf3fed9e1cd0b3868e48a235e41c497251fc
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 19 12:04:49 2019 +0300

        Fix filter help

    commit c0140256d841828ee0926cd8f037e0b0c89caab4
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 19 11:45:03 2019 +0300

        Added empty selection to top of contestname list

    commit 6ff80cb2f62ccbe29499c46757d490ace021ab57
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 19 11:36:16 2019 +0300

        Filter: autosave last used filter. Added button clear filter

    commit 21021f1939c1e801efb5ca508663df58f7f73216
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Thu Apr 18 20:03:15 2019 +0300

        Filter:strxString case insensitive, adifimport:anchor/layout qso inlog->yes,no,cancel

    commit dd8dba7517628e13efbedfca5723380a351a60c2
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Thu Apr 18 10:39:24 2019 +0300

        Filter save,load and search works now with contest columns

    commit 9497a93e58ae62ea13000555837d5ec011695f63
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Wed Apr 17 23:20:05 2019 +0200

        typo fixes and correction of comment

    commit ace491c802c67b91f156ae35bbc422d1da9e3cac
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Wed Apr 17 23:07:16 2019 +0200

        fix ContestName.tab now copy to root of cqrlog and read from root for filling combobox

    commit 36acfa62691fbf99c548b59261c12e7a801decc9
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Wed Apr 17 20:55:17 2019 +0300

        Filter layout with contest columns, no filter code yet

    commit 4dab0a92588909a8602535da52fdbc08143f7b98
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 16 22:06:26 2019 +0200

        add adif import for contest fields

    commit ac619eed36b58e19ca2576410853d7890ffbb231
    Merge: c8afe32 29112ef
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 15 19:59:40 2019 +0200

        Merge branch 'master' into integrationOfNewContestDbFieldsInGui

    commit c8afe32158f138126182b9784bfbb108900c7604
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sat Apr 13 16:24:31 2019 +0300

        limit serialNRReceived from FT8 contest modes to 6chrs

    commit a88d20211f9123acd534b4af9270b8e659faab07
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Wed Apr 10 16:48:51 2019 +0300

        Made shorter name for NewQso gbContest and it is visible only if contest form is visible

    commit d943e75550e6444aec1917d3ab94b1aee7da399d
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Tue Apr 9 17:08:50 2019 +0300

        630M database creation fix

    commit 2468d3ac00911c5d280f437d698cd2654579858b
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sun Apr 7 16:40:08 2019 +0300

        Added pref/visible columns selections for contest columns

    commit 00c9f9086d2aace35a0fe92ccbe460817be4cfa8
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Sun Apr 7 15:19:24 2019 +0300

        FIX pressing ESC in contest form caused also B sending. Force stx_string to upcase in input field

    commit d7a9970b17593d3fb466f992fc8ab65373b5506a
    Merge: ea070bb 6eaec22
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 5 18:07:48 2019 +0300

        Merge branch 'integrationOfNewContestDbFieldsInGui' of github.com:OH1KH/cqrlog into integrationOfNewContestDbFieldsInGui

         .

    commit ea070bb58dee3a5c87965a2183ce15f7fba6cdac
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Fri Apr 5 18:06:46 2019 +0300

        wsjt-spec mode use new contest fields.Fix "'' is not valid date"-error in wsjtx logging

    commit 6eaec227089dd8e48dddfb2e51966ef74a233769
    Merge: cebac6e b505f77
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Thu Apr 4 20:55:22 2019 +0200

        Merge branch 'master' into integrationOfNewContestDbFieldsInGui

    commit cebac6ebfb8ffacd7169c4710312cebeae99048b
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Thu Apr 4 20:36:30 2019 +0200

        add ContestName.tab for contest combo box

        	- ../ctyfiles/Contestname.tab Format CONTEST_ID|CONTEST_DESCRIPTION
        	- only CONTEST_ID is saved to database
        	- when no file is found, default contest list (ADIF 3.0.9) is used

    commit 5f8636e7e6215dbc824260820f17ef426886295a
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Thu Apr 4 17:00:00 2019 +0300

        Fixed every second press of empty cwkey sends 'b' with hamlib keyer

    commit 67c3a2a1165689df98d79d9463653537660243fb
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Thu Apr 4 13:26:56 2019 +0300

        CW macros nearly work. Empty CWmemory sends B every other press

    commit 3b05eaa9d09f791e3fcd69dd69c885a44c3285a3
    Author: OH1KH <oh1kh@sral.fi>
    Date:   Wed Apr 3 20:25:38 2019 +0300

        Contestname:autocomplete, lfm:anchoring, frm:dupe check

    commit 5503c40ad1c386582d934036581a4e14f40b7c1e
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Wed Apr 3 18:10:28 2019 +0200

        remove old srx/stx generation with pipe and space and clean death contest code

    commit 3c56f1b94307d5acb387a9c576bbe719c77493f0
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 23:23:47 2019 +0200

        fix bug that html export shows now data for contest fields

    commit 61f75555df5ada93129db0d2339a30e9514c425b
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 22:47:03 2019 +0200

        fix bug where adif export was generated but show now contest data

    commit 7c0ce64b9e92ee4c38eae1920c4ffe31c7d9a1bc
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 22:37:54 2019 +0200

        adif/html export with new contest fields

    commit 43a189efddf6bdc8b84cff675ca72bb111a26727
    Merge: f3cba04 8d53848
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 17:27:52 2019 +0200

        Merge branch 'cqrlogDatabaseVersion16' into integrationOfNewContestDbFieldsInGui

    commit 8d5384819ab0995985e3b79e3c60daabda749b6a
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 17:26:54 2019 +0200

        improved the update script for field info in table freqmem

    commit f3cba040ebb425d1150452733ef3d063464a9af2
    Merge: 91b05db d99ec3c
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 16:55:00 2019 +0200

        Merge branch 'cqrlogDatabaseVersion16' into integrationOfNewContestDbFieldsInGui

    commit d99ec3cb92c751d9a74c29f98fd26452ee74ea53
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Tue Apr 2 16:54:18 2019 +0200

        remove submode field

    commit 91b05db74f0af98f9014a27bc1decd15972ed521
    Merge: 960ec8c a9b11a8
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 1 19:20:04 2019 +0200

        Merge branch 'cqrlogDatabaseVersion16' into integrationOfNewContestDbFieldsInGui

    commit a9b11a81e1dad95dd1535554e73bb3d980f87765
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 1 19:19:25 2019 +0200

        modify field log_changes.cmd to varchar(20)

    commit 960ec8c6ed1b6644749e9b02adbd557daf291afa
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 1 13:23:59 2019 +0200

        activate only relevant fields in tab-circle of contest-gui

    commit 76a364a7b09579a5f9f82dedea5c29f0506d2fe9
    Merge: af5dd94 63a9950
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 1 10:05:57 2019 +0200

        Merge branch 'master' into integrationOfNewContestDbFieldsInGui

    commit 876e2170133766f393c4155a0cee28c9c65d099a
    Merge: 76a2ad3 63a9950
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Mon Apr 1 09:50:17 2019 +0200

        Merge branch 'master' into cqrlogDatabaseVersion16

    commit af5dd94bff6d60ea6a2dd92004fb284dc2d73ac4
    Merge: 93dbe4f 76a2ad3
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sun Mar 31 09:26:11 2019 +0200

        Merge branch 'cqrlogDatabaseVersion16' into integrationOfNewContestDbFieldsInGui

    commit 76a2ad3c6ae8a5d9727010948cb133da642adf52
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sun Mar 31 09:20:04 2019 +0200

        db new log get new fields

    commit 93dbe4f0882c01c735c5e1c38672d121991ef98b
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Mar 30 20:09:01 2019 +0100

        upgrade gui of contest and newqso to new contest database fields

        	NewQSO GUI
        		- group box for contestname, srx, stx, stx_string, strx_string
        		- field length in gui is restricted to max length of database field
        		- implement save, editing, view
        		- add mouse over hints
        	Contest GUI
        		- add contestname as combobox with ADIF 3.0.9 CONTEST_ID as selection, but also freestyle possible
          		- contestname will stay
        	  	- save qso saves to new contest fields in database
        		- add mouse over hints
                        - field length in gui is restricted for new db fields to max length of database field

    commit 22f0be0b9e3e87ba764759c6b3ae3f60050f587e
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Mar 30 18:48:38 2019 +0100

        upgrade database with new fields for contest, submode and trxcontrol

        	in detail
        	-table freqmem > info varchar(25)
                -table cqrlog_main > contestname varchar(40)
                -table cqrlog_main > stx varchar(6)
                -table cqrlog_main > srx varchar(6)
                -table cqrlog_main > stx_string varchar(50)
                -table cqrlog_main > srx_string varchar(50)
                -table cqrlog_main > submode varchar(20)
        	-database errorhandling for beta users because freqmem.info field allready exists
        	-add new fields to database views

    commit b4689590ed1f23ebd49bdfa727fce3bf8e3af7e1
    Author: Andreas Puschendorf <andreas@puschendorf.net>
    Date:   Sat Mar 30 18:48:38 2019 +0100

        upgrade database with new fields for contest, submode and trxcontrol

        	in detail
        	-table freqmem > info varchar(25)
                -table cqrlog_main > contestname varchar(40)
                -table cqrlog_main > stx varchar(6)
                -table cqrlog_main > srx varchar(6)
                -table cqrlog_main > stx_string varchar(50)
                -table cqrlog_main > srx_string varchar(50)
                -table cqrlog_main > submode varchar(20)
        	-database errorhandling for beta users because freqmem.info field allready exists
        	-add new fields to database views
This commit is contained in:
OH1KH 2019-05-02 20:42:10 +03:00 committed by Andreas Puschendorf
parent 4e34f1e61b
commit ddee46edc6
44 changed files with 3123 additions and 1574 deletions

224
ctyfiles/ContestName.tab Normal file
View File

@ -0,0 +1,224 @@
070-160M-SPRINT|PODXS Great Pumpkin Sprint
070-3-DAY|PODXS Three Day Weekend
070-31-FLAVORS|PODXS 31 Flavors
070-40M-SPRINT|PODXS 40m Firecracker Sprint
070-80M-SPRINT|PODXS 80m Jay Hudak Memorial Sprint
070-PSKFEST|PODXS PSKFest
070-ST-PATS-DAY|PODXS St. Patricks Day
070-VALENTINE-SPRINT|PODXS Valentine Sprint
10-RTTY|Ten-Meter RTTY Contest (2011 onwards)
1010-OPEN-SEASON|Open Season Ten Meter QSO Party
7QP|7th-Area QSO Party
AL-QSO-PARTY|Alabama QSO Party
ALL-ASIAN-DX-CW|JARL All Asian DX Contest (CW)
ALL-ASIAN-DX-PHONE|JARL All Asian DX Contest (PHONE)
ANARTS-RTTY|ANARTS WW RTTY
ANATOLIAN-RTTY|Anatolian WW RTTY
AP-SPRINT|Asia - Pacific Sprint
AR-QSO-PARTY|Arkansas QSO Party
ARI-DX|ARI DX Contest
ARRL-10|ARRL 10 Meter Contest
ARRL-160|ARRL 160 Meter Contest
ARRL-222|ARRL 222 MHz and Up Distance Contest
ARRL-DX-CW|ARRL International DX Contest (CW)
ARRL-DX-SSB|ARRL International DX Contest (Phone)
ARRL-EME|ARRL EME contest
ARRL-FIELD-DAY|ARRL Field Day
ARRL-RR-CW|ARRL Rookie Roundup (CW)
ARRL-RR-RTTY|ARRL Rookie Roundup (RTTY)
ARRL-RR-SSB|ARRL Rookie Roundup (Phone)
ARRL-RTTY|ARRL RTTY Round-Up
ARRL-SCR|ARRL School Club Roundup
ARRL-SS-CW|ARRL November Sweepstakes (CW)
ARRL-SS-SSB|ARRL November Sweepstakes (Phone)
ARRL-UHF-AUG|ARRL August UHF Contest
ARRL-VHF-JAN|ARRL January VHF Sweepstakes
ARRL-VHF-JUN|ARRL June VHF QSO Party
ARRL-VHF-SEP|ARRL September VHF QSO Party
AZ-QSO-PARTY|Arizona QSO Party
BARTG-RTTY|BARTG Spring RTTY Contest
BARTG-SPRINT|BARTG Sprint Contest
BC-QSO-PARTY|British Columbia QSO Party
CA-QSO-PARTY|California QSO Party
CIS-DX|CIS DX Contest
CO-QSO-PARTY|Colorado QSO Party
CQ-160-CW|CQ WW 160 Meter DX Contest (CW)
CQ-160-SSB|CQ WW 160 Meter DX Contest (SSB)
CQ-M|CQ-M International DX Contest
CQ-VHF|CQ World-Wide VHF Contest
CQ-WPX-CW|CQ WW WPX Contest (CW)
CQ-WPX-RTTY|CQ/RJ WW RTTY WPX Contest
CQ-WPX-SSB|CQ WW WPX Contest (SSB)
CQ-WW-CW|CQ WW DX Contest (CW)
CQ-WW-RTTY|CQ/RJ WW RTTY DX Contest
CQ-WW-SSB|CQ WW DX Contest (SSB)
CT-QSO-PARTY|Connecticut QSO Party
CVA-DX-CW|Concurso Verde e Amarelo DX CW Contest
CVA-DX-SSB|Concurso Verde e Amarelo DX CW Contest
CWOPS-CW-OPEN|CWops CW Open Competition
CWOPS-CWT|CWops Mini-CWT Test
DARC-WAEDC-CW|WAE DX Contest (CW)
DARC-WAEDC-RTTY|WAE DX Contest (RTTY)
DARC-WAEDC-SSB|WAE DX Contest (SSB)
DARC-WAG|DARC Worked All Germany
DE-QSO-PARTY|Delaware QSO Party
DL-DX-RTTY|DL-DX RTTY Contest
DMC-RTTY|DMC RTTY Contest
EA-CNCW|Concurso Nacional de Telegrafía
EA-DME|Municipios Españoles
EA-PSK63|EA PSK63
EA-RTTY|Unión de Radioaficionados Españoles RTTY Contest
EA-SMRE-CW|Su Majestad El Rey de España - CW
EA-SMRE-SSB|Su Majestad El Rey de España - SSB
EA-VHF-ATLANTIC|Atlántico V-UHF
EA-VHF-COM|Combinado de V-UHF
EA-VHF-COSTA-SOL|Costa del Sol V-UHF
EA-VHF-EA|Nacional VHF
EA-VHF-EA1RCS|Segovia EA1RCS V-UHF
EA-VHF-QSL|QSL V-UHF & 50MHz
EA-VHF-SADURNI|Sant Sadurni V-UHF
EA-WW-RTTY|Unión de Radioaficionados Españoles RTTY Contest
EPC-PSK63|PSK63 QSO Party
EU Sprint|EU Sprint
EU-HF|EU HF Championship
EU-PSK-DX|EU PSK DX Contest
EUCW160M|European CW Association 160m CW Party
FALL SPRINT|FISTS Fall Sprint
FL-QSO-PARTY|Florida QSO Party
GA-QSO-PARTY|Georgia QSO Party
HA-DX|Hungarian DX Contest
HELVETIA|Helvetia Contest
HI-QSO-PARTY|Hawaiian QSO Party
HOLYLAND|IARC Holyland Contest
IA-QSO-PARTY|Iowa QSO Party
IARU-FIELD-DAY|DARC IARU Region 1 Field Day
IARU-HF|IARU HF World Championship
ID-QSO-PARTY|Idaho QSO Party
IL QSO Party|Illinois QSO Party
IN-QSO-PARTY|Indiana QSO Party
JARTS-WW-RTTY|JARTS WW RTTY
JIDX-CW|Japan International DX Contest (CW)
JIDX-SSB|Japan International DX Contest (SSB)
JT-DX-RTTY|Mongolian RTTY DX Contest
KS-QSO-PARTY|Kansas QSO Party
KY-QSO-PARTY|Kentucky QSO Party
LA-QSO-PARTY|Louisiana QSO Party
LDC-RTTY|DRCG Long Distance Contest (RTTY)
LZ DX|LZ DX Contest
MAR-QSO-PARTY|Maritimes QSO Party
MD-QSO-PARTY|Maryland QSO Party
ME-QSO-PARTY|Maine QSO Party
MI-QSO-PARTY|Michigan QSO Party
MIDATLANTIC-QSO-PARTY|Mid-Atlantic QSO Party
MN-QSO-PARTY|Minnesota QSO Party
MO-QSO-PARTY|Missouri QSO Party
MS-QSO-PARTY|Mississippi QSO Party
MT-QSO-PARTY|Montana QSO Party
NA-SPRINT-CW|North America Sprint (CW)
NA-SPRINT-RTTY|North America Sprint (RTTY)
NA-SPRINT-SSB|North America Sprint (Phone)
NAQP-CW|North America QSO Party (CW)
NAQP-RTTY|North America QSO Party (RTTY)
NAQP-SSB|North America QSO Party (Phone)
NC-QSO-PARTY|North Carolina QSO Party
ND-QSO-PARTY|North Dakota QSO Party
NE-QSO-PARTY|Nebraska QSO Party
NEQP|New England QSO Party
NH-QSO-PARTY|New Hampshire QSO Party
NJ-QSO-PARTY|New Jersey QSO Party
NM-QSO-PARTY|New Mexico QSO Party
NRAU-BALTIC-CW|NRAU-Baltic Contest (CW)
NRAU-BALTIC-SSB|NRAU-Baltic Contest (SSB)
NV-QSO-PARTY|Nevada QSO Party
NY-QSO-PARTY|New York QSO Party
OCEANIA-DX-CW|Oceania DX Contest (CW)
OCEANIA-DX-SSB|Oceania DX Contest (SSB)
OH-QSO-PARTY|Ohio QSO Party
OK-DX-RTTY|Czech Radio Club OK DX Contest
OK-OM-DX|Czech Radio Club OK-OM DX Contest
OK-QSO-PARTY|Oklahoma QSO Party
OMISS-QSO-PARTY|Old Man International Sideband Society QSO Party
ON-QSO-PARTY|Ontario QSO Party
OR-QSO-PARTY|Oregon QSO Party
PA-QSO-PARTY|Pennsylvania QSO Party
PACC|Dutch PACC Contest
PSK-DEATHMATCH|MDXA PSK DeathMatch (2005-2010)
QC-QSO-PARTY|Quebec QSO Party
RAC|Canadian Amateur Radio Society Contest
RAC-CANADA-DAY|RAC Canada Day Contest
RAC-CANADA-WINTER|RAC Canada Winter Contest
RDAC|Russian District Award Contest
RDXC|Russian DX Contest
REF-160M|Reseau des Emetteurs Francais 160m Contest
REF-CW|Reseau des Emetteurs Francais Contest (CW)
REF-SSB|Reseau des Emetteurs Francais Contest (SSB)
REP-PORTUGAL-DAY-HF|Rede dos Emissores Portugueses Portugal Day HF Contest
RI-QSO-PARTY|Rhode Island QSO Party
RSGB-160|1.8MHz Contest
RSGB-21/28-CW|21/28 MHz Contest (CW)
RSGB-21/28-SSB|21/28 MHz Contest (SSB)
RSGB-80M-CC|80m Club Championships
RSGB-AFS-CW|Affiliated Societies Team Contest (CW)
RSGB-AFS-SSB|Affiliated Societies Team Contest (SSB)
RSGB-CLUB-CALLS|Club Calls
RSGB-COMMONWEALTH|Commonwealth Contest
RSGB-IOTA|IOTA Contest
RSGB-LOW-POWER|Low Power Field Day
RSGB-NFD|National Field Day
RSGB-ROPOCO|RoPoCo
RSGB-SSB-FD|SSB Field Day
RUSSIAN-RTTY|Russian Radio RTTY Worldwide Contest
SAC-CW|Scandinavian Activity Contest (CW)
SAC-SSB|Scandinavian Activity Contest (SSB)
SARTG-RTTY|SARTG WW RTTY
SC-QSO-PARTY|South Carolina QSO Party
SCC-RTTY|SCC RTTY Championship
SD-QSO-PARTY|South Dakota QSO Party
SMP-AUG|SSA Portabeltest
SMP-MAY|SSA Portabeltest
SP-DX-RTTY|PRC SPDX Contest (RTTY)
SPAR-WINTER-FD|SPAR Winter Field Day
SPDXContest|SP DX Contest
SPRING SPRINT|FISTS Spring Sprint
SR-MARATHON|Scottish-Russian Marathon
STEW-PERRY|Stew Perry Topband Distance Challenge
SUMMER SPRINT|FISTS Summer Sprint
TARA-GRID-DIP|TARA Grid Dip PSK-RTTY Shindig
TARA-RTTY|TARA RTTY Mêlée
TARA-RUMBLE|TARA Rumble PSK Contest
TARA-SKIRMISH|TARA Skirmish Digital Prefix Contest
TEN-RTTY|Ten-Meter RTTY Contest (before 2011)
TMC-RTTY|The Makrothen Contest
TN-QSO-PARTY|Tennessee QSO Party
TX-QSO-PARTY|Texas QSO Party
UBA-DX-CW|UBA Contest (CW)
UBA-DX-SSB|UBA Contest (SSB)
UK-DX-BPSK63|European PSK Club BPSK63 Contest
UK-DX-RTTY|UK DX RTTY Contest
UKR-CHAMP-RTTY|Open Ukraine RTTY Championship
UKRAINIAN DX|Ukrainian DX
UKSMG-6M-MARATHON|UKSMG 6m Marathon
UKSMG-SUMMER-ES|UKSMG Summer Es Contest
URE-DX|Ukrainian DX Contest
US-COUNTIES-QSO|Mobile Amateur Awards Club
UT-QSO-PARTY|Utah QSO Party
VA-QSO-PARTY|Virginia QSO Party
VENEZ-IND-DAY|RCV Venezuelan Independence Day Contest
VIRGINIA QSO PARTY|Virginia QSO Party
VOLTA-RTTY|Alessandro Volta RTTY DX Contest
WA-QSO-PARTY|Washington QSO Party
WI-QSO-PARTY|Wisconsin QSO Party
WIA-HARRY ANGEL|WIA Harry Angel Memorial 80m Sprint
WIA-JMMFD|WIA John Moyle Memorial Field Day
WIA-OCDX|WIA Oceania DX (OCDX) Contest
WIA-REMEMBRANCE|WIA Remembrance Day
WIA-ROSS HULL|WIA Ross Hull Memorial VHF/UHF Contest
WIA-TRANS TASMAN|WIA Trans Tasman Low Bands Challenge
WIA-VHF/UHF FD|WIA VHF UHF Field Days
WIA-VK SHIRES|WIA VK Shires
WINTER SPRINT|FISTS Winter Sprint
WV-QSO-PARTY|West Virginia QSO Party
WY-QSO-PARTY|Wyoming QSO Party
XE-INTL-RTTY|Mexico International Contest (RTTY)
YOHFDX|YODX HF contest
YUDXC|YU DX Contest

View File

@ -35,7 +35,7 @@
</p>
<p>
<b>RECOMMENDATION:</b> Make new log for each contest, do not allow qrz/hamqth search. It slows things.
<b>Note:</b> This is <b>NOT</b> a contest logging add-on!!!
<b>Note:</b> This is <b>NOT</b> a contest logging add-on!!! It is a contest-notepad.
It is meant to be a tool for "Sunday contesters working in Tourist Class". Do not expect wonders!
</p><p>
Form Contest is just a "child form" for NewQSO to make qso logging faster when working in contests.
@ -73,18 +73,13 @@ Or hit ENTER after rxnumber if no additional message is exchanged.
<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>
<p>
Contest numbers and messages are saved in log into RST fields separated by spaces like. 599 001 MSG
This has two benefits:
<ul>
<li> CW macros work without any programming change. If you set “send RST”-macro it sends also contest
number and message, and when not in contest it sends just RST.
How ever a small modification to original is made. If you use %rs for RST it will send 5NN. Now
modified version sends also T for zero. So you will have 599 001 like 5NN TT1.</li>
<li> Backup of logs work without any change. RST field just are a bit longer</li>
</ul>
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).
<br>
CW macros Have some new items. Look them from <a href="h26.html">CW Operation</a>
</p>
<p>
ADIF export is modified so that it separates RST fields to right tags.<br><br>
ADIF exports fields to right tags.<br><br>
&lt;RST_SENT:3&gt;599&lt;STX:3&gt;001<br>
&lt;RST_RCVD:3&gt;599&lt;SRX:3&gt;002<br>
&lt;RST_SENT:3&gt;599&lt;STX:3&gt;003&lt;STX_STRING:2&gt;SA<br>

View File

@ -71,7 +71,7 @@
<tr>
<td width="35%">Ctrl-K</td>
<td width="65%">Remote mode for N1MM logger</td>
</tr>
</tr>
<tr>
<td width="35%">Ctrl-L</td>
<td width="65%">Change your QRA locator</td>
@ -168,6 +168,15 @@
<td width="35%">F12</td>
<td width="65%">Create filter</td>
</tr>
<tr>
<td width="35%">Shift-F10</td>
<td width="65%">QRZ/HamQTH Callbook/IK3QAR qsl manager page search (opens in browser)</td>
</tr>
<tr>
<td width="35%">Shift-F12</td>
<td width="65%">Cancel filter</td>
</tr>
<tr>
<td width="35%">Ctrl-D</td>
<td width="65%">DXCC statistics <font color="blue"><strong>**</strong></font></td>
@ -267,6 +276,10 @@
continent, DXCC reference, geographical coordinates (in decimal form),
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>
You can add a general long note to your log with the Ctrl-N key (from
the logging screen or from the 'File' menu option).<br><br>
<img src="img/h2.png" border="0"><br><br>
@ -330,8 +343,8 @@ best digimode softwares available.<br>
<br>The most important thing is a <a href="h1.html#ch2">proper setup</a> of the remote mode. For <em>fldigi<em> you have 2 different ways to setup remote .<br>
For <em>wsjt-x</em>, setup is done at same tab of preferences as <em>fldigi<em>. For operating with wsjt-x see: <a href="wsjt.html">Wsjt-x operation</a>
<br><br> To use <em>fldigi</em>, CQRLOG must be switched to Remote from the menu File -> Remote mode for fldigi(or CTRL+M).
<br> To use <em>wsjt-x</em>, CQRLOG must be switched to Remote from the menu File -> Remote mode for wsjt.<br><br>
<br> To use <em>wsjt-x</em>, CQRLOG must be switched to Remote from the menu File -> Remote mode for wsjt.
<br> To use <em>N1MM logger</em>, CQRLOG must be switched to Remote from the menu File -> Remote mode for N1MM logger.<br><br>
<img src="img/h104.png"><br><br>
The logging screen changes to indicate that CQRLOG is now working in 'Remote mode!' and
can be controlled either from <em>fldigi</em> or can "dictate" the mode and frequency

View File

@ -29,20 +29,26 @@
<div style="text-align: left;"><strong>CQRLOG for LINUX by OK7AN &amp; OK1RR</strong></div>
<p align=center><img src=img/line.png></p>
<a name="ah21"><h2><strong>Filtering</strong></h2></a>
CQRLOG offers a wide variety of filtering options allowing you to select and export records
<p>CQRLOG offers a wide variety of filtering options allowing you to select and export records
(for awards etc.) in ADIF or HTML formats.<br><br>
<img src="img/h49.png"><br><br>
To get clean start use button <strong>Clear Filter</strong> before setting your filter values.<br>
If <strong>Remember filter</strong> checkbox is checked filter remembers last settings (saved in ~/.config/cqrlog/FilterSettings.fil)
, so there is no need to create filter every time from beginning
after opened again from Qso list/Filter.
<br>Only filters that you plan to need later in future needs to be saved by <strong>Save filter</strong> button.
<br>Immediate press of <strong>OK</strong> after button <strong>Clear Filter</strong> is pressed removes all previous filtering if <strong>Remember filter</strong> checkbox is checked.
</p><img src="img/h49.png"><br><br>
Most of the fields have an option to select records based on an exact match or on a substring
contained in the selected field, i.e. if you want to select all WA3 stations, put WA3 into
the <b>Callsign</b> box and click the <b>Include</b> radio button. Note, please, that if you select
contacts with members of a particular club or from your own database, you should choose
the time span (<b>date from-to</b>) to make the <b>Membership</b> option active.
<br>Selecting <b>Band</b> from bandselector will preset <b>Freq from:</b> and <b>Freq to:</b> as band start and end frequencies (Defined in Preferences/Bands/Frequencies).
<br> Once filter values are selected you can make them reversed by checking chekbox <strong>NOT</strong>. I.E. making filter like <strong>mode FT8</strong>
will show all FT8 qsos, but if you check <strong>NOT</strong> it shows all other mode qsos, but not FT8 ones.
<br><br> Once filter values are selected you can make them reversed by checking chekbox <strong>Reverse filter (NOT)</strong>. I.E. making filter like <strong>mode FT8</strong>
will show all FT8 qsos, but if you check <strong>Reverse filter (NOT)</strong> it shows all other mode qsos, but not FT8 ones.
<br><br>
Pressing calendar icon is easy way to set date. Double click on selected date closes calendar and sets the date. Pressing ESC closes calendar, but does not set date. Date can also be typed in manually.
<br>
<br><br>
<img src="img/h101b.png"><br><br>
The sorting order can be selected from the following options:<<br>
<img src="img/h50.png"><br><br>

View File

@ -43,17 +43,24 @@
<tbody>
<tr>
<td bgcolor=#ffffcc valign="top">
%mc - my callsign<br>
%mn - my name<br>
%ml - my locator<br>
%mq - my qth<br>
%r - rst to be sent<br>
%n - his name<br>
%c - his callsign<br>
| - half space<br>
%h - greetings (GM/GA/GE) calculated from local time of worked station<br>
%rs - rst to be sent, 9 replaced with N<br>
<ul>
<li>%mc - my callsign</li>
<li>%mn - my name</li>
<li>%mq - my qth</li>
<li>%ml - my locator</li>
<li>%r - rst send</li>
<li>%rs - rst send sends N instead of 9<br>(sends also 0 as T, but that does not exist in normal report)</li>
<br>
<li>%n - name</li>
<li>%c - callsign</li>
<li>%h - greeting GM/GA/GE calculated from the %c station location time</li>
<br>
<li>%xn - contest exchenge serial number</li>
<li>%xm - contest exchange message</li>
<li>%xns - contest exchenge serial number sends 9->N and 0->T</li>
<li>%xrs - full contest exchange RST+SerialNR+Message sends 9->N and 0->T.<br>
(May be used always instead of %rs as if serNR and Message are empty just sends plain report.)</li>
</ul>
</td>
</tr>
</tbody>

View File

@ -64,6 +64,9 @@
<img src=img/h45.png><br><br>
Choose 'ADIF'. An usual a dialog appears (depending on the desktop used). Choose a
location and file name.<br><br>
<img src=img/h45b.png><br><br>
<img src=img/h45c.png><br><br>
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>

View File

@ -33,14 +33,22 @@
<a name="ah37"><em><strong>My radio control (CAT) does not work</strong></em>
<ul>
<li><strong>Check your ports.</strong> You must be a member of the user group,
which has permission to use ttyS* or ttyUSB* devices.
which has permission to use ttyS* or ttyUSB* devices.<br>
Open command console and give "ls -l your serial port name" and "groups" commands.<br>
There must be same group, usually "dialout" in both results.<br><br>
[saku@hamtpad ~]$ ls -l /dev/ttyUSB0<br>
crw-rw----. 1 root <strong>dialout</strong> 188, 0 13. 4. 09:39 /dev/ttyUSB0<br>
[saku@hamtpad ~]$ groups<br>
saku <strong>dialout</strong> lock<br>
[saku@hamtpad ~]$<br><br>
If not try google with "your_linux_distribution_name add user to dial group" to get information how to do the fix.<br>
</li>
<li><strong>Check that your radio is properly set up </strong>
<a href="h1.html#ah7"><em>(see here)</em></a>. Click the 'Settings' button and
check the port settings - ttyS* or ttyUSB* number and <strong>all</strong>
communication parameters.
</li>
<li><strong>Is the poll rate set too fast?</strong> Try a lower setting (higher number).</li>
<li><strong>Is the poll rate set too fast?</strong> Try a lower setting (higher number). Your qsos usually lasts longer than 5 seconds so even ẃith value 5000 the right frequency is there before you save your qso.</li>
</ul>
<br>
<p align=center><img src=img/line.png></p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 83 KiB

BIN
help/img/h45b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
help/img/h45c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 72 KiB

BIN
help/img/h9b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -273,13 +273,15 @@ type
loc, my_loc,county,award,remarks : String; adif : Integer;
idcall,state,cont : String; qso_dxcc : Boolean; profile : Integer;
nclub1,nclub2,nclub3,nclub4,nclub5, PropMode, Satellite : String;
RxFreq : Currency);
RxFreq : Currency;srx : String;stx : String;srx_string : String;stx_string : String;
contestname : String);
procedure EditQSO(date : TDateTime; time_on,time_off,call : String; freq : Currency;mode,rst_s,
rst_r, stn_name,qth,qsl_s,qsl_r,qsl_via,iota,pwr : String; itu,waz : Integer;
loc, my_loc,county,award,remarks : String; adif : Word; idcall,state,cont : String;
qso_dxcc : Boolean; profile : Integer; PropMode, Satellite : String;
RxFreq : Currency; idx : LongInt);
RxFreq : Currency; idx : LongInt;srx : String;stx : String;srx_string : String;stx_string : String;
contestname : String);
procedure SaveComment(call,text : String);
procedure DeleteComment(id : Integer);
procedure PrepareImport;
@ -1282,7 +1284,8 @@ procedure TdmData.SaveQSO(date : TDateTime; time_on,time_off,call : String; freq
loc, my_loc,county,award,remarks : String; adif : Integer;
idcall,state,cont : String; qso_dxcc : Boolean; profile : Integer;
nclub1,nclub2,nclub3,nclub4,nclub5, PropMode, Satellite : String;
RxFreq : Currency);
RxFreq : Currency;srx : String;stx : String;srx_string : String;stx_string : String;
contestname : String);
var
qsodate : String;
band : String;
@ -1317,7 +1320,8 @@ begin
Q.SQL.Text := 'insert into cqrlog_main (qsodate,time_on,time_off,callsign,freq,mode,'+
'rst_s,rst_r,name,qth,qsl_s,qsl_r,qsl_via,iota,pwr,itu,waz,loc,my_loc,'+
'county,award,remarks,adif,idcall,state,qso_dxcc,band,profile,cont,club_nr1,'+
'club_nr2,club_nr3,club_nr4,club_nr5, prop_mode, satellite, rxfreq) values('+QuotedStr(qsodate) +
'club_nr2,club_nr3,club_nr4,club_nr5, prop_mode, satellite, rxfreq, srx, stx,'+
'srx_string, stx_string, contestname) values('+QuotedStr(qsodate) +
','+QuotedStr(time_on)+','+QuotedStr(time_off)+
','+QuotedStr(call)+','+FloatToStr(freq)+
','+QuotedStr(mode)+','+QuotedStr(rst_s)+
@ -1335,7 +1339,7 @@ begin
','+QuotedStr(band)+','+ IntToStr(profile) +','+QuotedStr(cont)+
','+QuotedStr(nclub1)+','+QuotedStr(nclub2)+','+QuotedStr(nclub3)+
','+QuotedStr(nclub4)+','+QuotedStr(nclub5)+','+QuotedStr(PropMode)+','+QuotedStr(Satellite)+','+rx_freq+
')';
','+QuotedStr(srx)+','+QuotedStr(stx)+','+QuotedStr(srx_string)+','+QuotedStr(stx_string)+','+QuotedStr(contestname)+')';
if fDebugLevel >=1 then
Writeln(Q.SQL.Text);
Q.ExecSQL;
@ -1346,7 +1350,8 @@ procedure TdmData.EditQSO(date : TDateTime; time_on,time_off,call : String; freq
rst_r, stn_name,qth,qsl_s,qsl_r,qsl_via,iota,pwr : String; itu,waz : Integer;
loc, my_loc,county,award,remarks : String; adif : Word; idcall,state,cont : String;
qso_dxcc : Boolean; profile : Integer; PropMode, Satellite : String;
RxFreq : Currency; idx : LongInt);
RxFreq : Currency; idx : LongInt;srx : String;stx : String;srx_string : String;stx_string : String;
contestname : String);
var
qsodate : String;
band : String;
@ -1388,7 +1393,8 @@ begin
', qth = ' + QuotedStr(Trim(qth)) + ', award = ' + QuotedStr(award) +', band = ' + QuotedStr(band) +
', profile = ' + IntToStr(profile) + ', idcall = ' + QuotedStr(idcall) + ', state=' + QuotedStr(state) +
', cont = ' + QuotedStr(cont)+ ', prop_mode = ' + QuotedStr(PropMode) + ', satellite = ' + QuotedStr(Satellite)+
', rxfreq = ' + rx_freq +
', rxfreq = ' + rx_freq + ', stx = ' + QuotedStr(stx)+ ', stx_string = ' + QuotedStr(stx_string) + ', srx = ' + QuotedStr(srx)+
', srx_string = ' + QuotedStr(srx_string) + ', contestname = ' + QuotedStr(contestname)+
' where id_cqrlog_main = ' + IntToStr(idx);
if fDebugLevel >=1 then
Writeln(Q.SQL.Text);
@ -2292,264 +2298,6 @@ begin
end
end;
{$IFDEF CONTEST}
procedure TdmData.CreateContestDatabase(FileName : String);
begin
fContestDataFile := FileName+'.fdb';
ContestDatabase.DatabaseName := fContestDataFile;
Writeln(ContestDatabase.DatabaseName);
ContestDatabase.CreateDatabase();
try
ContestDataBase.Connected := True;
dsCQRTest.SQL.Clear;
trCQRTest.StartTransaction;
dsCQRTest.SQL.Add('CREATE GENERATOR gid_main;');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
trCQRTest.Commit;
dsCQRTest.SQL.Clear;
trCQRTest.StartTransaction;
dsCQRTest.SQL.Add('CREATE TABLE cqrtest (');
dsCQRTest.SQL.Add(' id_cqrtest INTEGER NOT NULL PRIMARY KEY,');
dsCQRTest.SQL.Add(' qsodate VARCHAR(10),');
dsCQRTest.SQL.Add(' time_on VARCHAR(5),');
dsCQRTest.SQL.Add(' qso_nr INTEGER,');
dsCQRTest.SQL.Add(' call VARCHAR(20),');
dsCQRTest.SQL.Add(' freq NUMERIC(10,4),');
dsCQRTest.SQL.Add(' mode VARCHAR(8),');
dsCQRTest.SQL.Add(' rst_s VARCHAR(20),');
dsCQRTest.SQL.Add(' rst_r VARCHAR(20),');
dsCQRTest.SQL.Add(' exch1 VARCHAR(20),');
dsCQRTest.SQL.Add(' exch2 VARCHAR(20),');
dsCQRTest.SQL.Add(' mult1 VARCHAR(1),');
dsCQRTest.SQL.Add(' mult2 VARCHAR(1),');
dsCQRTest.SQL.Add(' name VARCHAR(20),');
dsCQRTest.SQL.Add(' qth VARCHAR(20),');
dsCQRTest.SQL.Add(' points INTEGER,');
dsCQRTest.SQL.Add(' power VARCHAR(10),');
dsCQRTest.SQL.Add(' waz VARCHAR(2),');
dsCQRTest.SQL.Add(' itu VARCHAR(2),');
dsCQRTest.SQL.Add(' band VARCHAR(10),');
dsCQRTest.SQL.Add(' wpx VARCHAR(20),');
dsCQRTest.SQL.Add(' state VARCHAR(20),');
dsCQRTest.SQL.Add(' iota VARCHAR(6),');
dsCQRTest.SQL.Add(' dxcc_ref VARCHAR(20)');
dsCQRTest.SQL.Add(');');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
dsCQRTest.SQL.Clear;
dsCQRTest.SQL.Add('CREATE TABLE version (');
dsCQRTest.SQL.Add(' major INTEGER DEFAULT ' + IntToStr(major));
dsCQRTest.SQL.Add(');');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
dsCQRTest.SQL.Clear;
dsCQRTest.SQL.Add('CREATE INDEX dxcc_ref ON cqrtest (dxcc_ref);');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
dsCQRTest.SQL.Clear;
dsCQRTest.SQL.Add('CREATE INDEX qsodate ON cqrtest (qsodate);');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
dsCQRTest.SQL.Clear;
dsCQRTest.SQL.Add('CREATE INDEX call ON cqrtest (call);');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
trCQRTest.Commit;
dsCQRTest.SQL.Clear;
trCQRTest.StartTransaction;
dsCQRTest.SQL.Add('CREATE OR ALTER TRIGGER bi_cqrtest FOR cqrtest');
dsCQRTest.SQL.Add('ACTIVE BEFORE INSERT');
dsCQRTest.SQL.Add(' POSITION 0');
dsCQRTest.SQL.Add('AS');
dsCQRTest.SQL.Add('BEGIN');
dsCQRTest.SQL.Add(' if ((new.id_cqrtest is null) or (new.id_cqrtest = 0)) then');
dsCQRTest.SQL.Add(' BEGIN');
dsCQRTest.SQL.Add(' new.id_cqrtest = gen_id( gid_main, 1 );');
dsCQRTest.SQL.Add(' END');
dsCQRTest.SQL.Add('END');
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.ExecSQL;
trCQRTest.Commit;
dsCQRTest.SQL.Clear
finally
ContestDatabase.Connected := False
end
end;
function TdmData.OpenContestDatabase(FileName : String) : Boolean;
begin
Result := True;
try
fContestDataFile := FileName;
ContestDatabase.DatabaseName := fContestDataDir + fContestDataFile;
Writeln(ContestDatabase.DatabaseName);
ContestDatabase.Connected := True;
dsCQRTest.Close;
dsCQRTest.SQL.Text := 'SELECT * FROM cqrtest ORDER BY qsodate,time_on,id_cqrtest';
if fDebugLevel>=1 then Writeln(dsCQRTest.SQL.Text);
dsCQRTest.Open;
dsCQRTest.Last
except
on E : Exception do
begin
Application.MessageBox(PChar('Cannot open database!'+#13+E.Message),'Error ...',mb_OK + mb_IconError);
Result := False
end
end
end;
procedure TdmData.DeleteContestQSO(id : LongInt);
begin
Qc.Close;
Qc.SQL.Text := 'delete from cqrtest where id_cqrtest = ' + IntToStr(id);
if fDebugLevel>=1 then Writeln(Qc.SQL.Text);
trQc.StartTransaction;
dmData.Qc.ExecSQL;
trQc.Commit;
Qc.SQL.Clear
end;
procedure TdmData.SaveContestQSO(date : TDateTime;time_on,call,rst_s,rst_r,exch1,exch2,freq,mode,
waz,itu,dxcc_ref : String);
var
qsodate : String;
nr : Integer;
band : String;
iota : String = '';
sname : String = '';
qth : String = '';
state : String = '';
cexch1 : String = '';
cexch2 : String = '';
begin
dsCQRTest.Last;
band := IntToStr(dmUtils.GetBandFromFreq(freq))+'M';
if waz = '' then
WAZ := 'null';
if itu = '' then
ITU := 'null';
dsCQRTest.Last;
nr := dsCQRTest.Fields[3].AsInteger + 1;
cexch1 := UpperCase(trim(dmData.tstini.ReadString('Details','Exch1','None')));
cexch2 := UpperCase(trim(dmData.tstini.ReadString('Details','Exch2','None')));
if cexch1 = 'NONE' then
exch1 := ''
else if cexch1 = 'WAZ ZONE' then
waz := exch1
else if cexch1 = 'ITU ZONE' then
itu := exch1
else if cexch1 = 'IOTA' then
iota := exch1
else if cexch1 = 'NAME' then
sname := exch1
else if cexch1 = 'QTH' then
qth := exch1
else if cexch1 = 'STATE' then
state := exch1;
if cexch2 = 'NONE' then
exch2 := ''
else if cexch2 = 'WAZ ZONE' then
waz := exch2
else if cexch2 = 'ITU ZONE' then
itu := exch2
else if cexch2 = 'IOTA' then
iota := exch2
else if cexch2 = 'NAME' then
sname := exch2
else if cexch2 = 'QTH' then
qth := exch2
else if cexch2 = 'STATE' then
state := exch2;
trQc.StartTransaction;
qsodate := (FormatDateTime('YYYY-MM-DD',date));
//date : TDateTime;time_on,call,rst_s,nr_s,rst_r,nr_r,exch1,exch2,freq,band,mode,waz,itu
Qc.SQL.Text := 'insert into cqrtest (qsodate,time_on,call,rst_s,rst_r,exch1,exch2,'+
'freq,band,mode,waz,itu,dxcc_ref,qso_nr,name,qth,iota,state) values (' + QuotedStr(qsodate) +
',' + QuotedStr(time_on) + ',' + QuotedStr(call) +
',' + QuotedStr(rst_s)+ ',' + QuotedStr(rst_r) +
',' + QuotedStr(exch1) + ',' + QuotedStr(exch2) +
',' + freq + ',' + QuotedStr(band) + ',' + QuotedStr(mode) +
',' + waz + ',' + itu + ',' + QuotedStr(dxcc_ref) + ',' + IntToStr(nr) +
','+QuotedStr(sName) + ','+QuotedStr(qth)+','+QuotedStr(iota)+','+QuotedStr(state)+')';
if fDebugLevel >=1 then Writeln(Qc.SQL.Text);
Qc.ExecSQL;
trQc.Commit
end;
procedure TdmData.EditTestQSO(qsodate,time_on,call,freq,mode,rst_s,rst_r,exch1,exch2,sname,qth,power,
waz,itu,wpx,state,iota : String;points : Integer;mult1,mult2 : Boolean;
id : LongInt);
var
m1 : String = '';
m2 : String = '';
begin
if mult1 then
m1 := 'X';
if mult2 then
m2 := 'X';
Qc.Close;
Qc.SQL.Text := 'update cqrtest set qsodate='+QuotedStr(qsodate)+',time_on='+QuotedStr(time_on)+
',call='+QuotedStr(call)+',freq='+freq+',mode='+QuotedStr(mode)+',rst_s='+QuotedStr(rst_s)+
',rst_r='+QuotedStr(rst_r)+',exch1='+QuotedStr(exch1)+',exch2='+QuotedStr(exch2)+',name='+QuotedStr(sname)+
',qth='+QuotedStr(qth)+',power='+QuotedStr(power)+',waz='+QuotedStr(waz)+',itu='+QuotedStr(itu)+
',wpx='+QuotedStr(wpx)+',state='+QuotedStr(state)+',iota='+QuotedStr(iota)+',points='+IntToStr(points)+
',mult1='+QuotedStr(m1)+',mult2='+QuotedStr(m2) + ' where id_cqrtest = '+IntToStr(id);
if fDebugLevel>=1 then Writeln(Qc.SQL.Text);
trQc.StartTransaction;
Qc.ExecSQL;
trQc.Commit;
Qc.Close()
end;
procedure TdmData.GetLastExchange(call : String; var exch : String; var CurPos : TCurPos);
var
ex1 : Boolean;
ex2 : Boolean;
e1 : String = '';
e2 : String = '';
begin
exch := '';
CurPos := cpEnd;
e1 := UpperCase(trim(tstini.ReadString('Details','Exch1','None')));
e2 := UpperCase(trim(tstini.ReadString('Details','Exch2','None')));
ex1 := (e1 <> 'NONE') and (e1 <> 'QSO NUMBER');
ex2 := (e2 <> 'NONE') and (e2 <> 'QSO NUMBER');
if not (ex1 or ex2) then
exit;
Qc.Close;
Qc.SQL.Text := 'select exch1,exch2 from cqrtest where call = '+QuotedStr(call);
if fDebugLevel>=1 then Writeln(Qc.SQL.Text);
trQc.StartTransaction;
Qc.Open();
if Qc.Fields.AsString[0] <> '' then
begin
if ex1 and ex2 then
exch := Qc.Fields.AsString[0] + ' ' + Qc.Fields.AsString[1]
else begin
if ex1 then
exch := Qc.Fields.AsString[0];
if ex2 then
begin
exch := ' ' + Qc.Fields.AsString[1];
CurPos := cpBegin
end
end
end;
Qc.Close(etmRollback)
end;
{$ENDIF}
procedure TdmData.LoadLoTWCalls;
procedure GrowArray(NextIndex: integer);
@ -3235,11 +2983,23 @@ begin
Q1.ExecSQL;
trQ1.Commit;
trQ1.StartTransaction;
Q1.SQL.Text := 'ALTER TABLE freqmem ADD COLUMN info varchar(25)';
if fDebugLevel>=1 then Writeln(Q1.SQL.Text);
Q1.ExecSQL;
trQ1.Commit;
//Here we need something. All Beta testers have this already added
//either Try/finally/end to skip error,
//or testing the exixtence of "info" before running alter
trQ1.StartTransaction;
Q1.SQL.Text := 'alter table freqmem add info varchar(25) null';
if fDebugLevel>=1 then Writeln(Q1.SQL.Text);
try
if fDebugLevel>=1 then Writeln( 'On Try add info');
Q1.ExecSQL;
except
// will only be executed in case of an exception as debug info
on E: EDatabaseError do
if fDebugLevel>=1 then Writeln( 'Database error: '+ E.ClassName + #13#10 + E.Message );
on E: Exception do
if fDebugLevel>=1 then Writeln( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
trQ1.Commit
end;

View File

@ -38,14 +38,14 @@ const
':', '|', '-', '=', '+', '@', '#', '*', '%', '_', '(', ')', '$', '<', '>'];
empty_freq = '0.00000';
empty_azimuth = '0.0';
cMaxModes = 45; //was 39 //was 42
cMaxModes = 46; //last added FT4
cModes: array [0..cMaxModes] of string =
('CW', 'SSB', 'AM', 'FM', 'RTTY', 'SSTV', 'PACTOR', 'PSK', 'ATV', 'CLOVER', 'GTOR', 'MTOR',
'PSK31', 'HELL', 'MT63',
'QRSS', 'CWQ', 'BPSK31', 'MFSK', 'JT44', 'FSK44', 'WSJT', 'AMTOR',
'THROB', 'BPSK63', 'PACKET',
'OLIVIA', 'MFSK16', 'JT4','JT6M', 'JT65', 'JT65A', 'JT65B', 'JT65C',
'JT9', 'QRA64', 'ISCAT', 'MSK144', 'FT8', 'FSK441', 'PSK125',
'JT9', 'QRA64', 'ISCAT', 'MSK144', 'FT8', 'FT4', 'FSK441', 'PSK125',
'PSK63', 'WSPR', 'PSK250', 'ROS', 'DIGITALVOICE');
cMaxBandsCount = 27; //26 bands
@ -227,7 +227,7 @@ type
function ExtractZipCode(qth : String; Position : Integer) : String;
function GetLabelBand(freq : String) : String;
function GetAdifBandFromFreq(MHz : string): String;
function GetCWMessage(Key,call,rst_s,HisName,HelloMsg, text : String; QSONR : String = '') : String;
function GetCWMessage(Key,call,rst_s,stx,stx_str,HisName,HelloMsg, text: String) : String;
function RigGetcmd(r : String): String;
function GetLastQSLUpgradeDate : TDateTime;
function CallTrim(call : String) : String;
@ -2494,6 +2494,8 @@ begin
older := FileAge(dir + 'prop_mode.tab');
if older < FileAge(dir + 'sat_name.tab') then
older := FileAge(dir + 'sat_name.tab');
if older < FileAge(dir + 'ContestName.tab') then
older := FileAge(dir + 'ContestName.tab');
Result := FileDateToDateTime(older) + 1;
end;
@ -2602,20 +2604,24 @@ begin
Result := LowerCase(GetBandFromFreq(freq));
end;
function TdmUtils.GetCWMessage(Key,call,rst_s,HisName,HelloMsg, text : String; QSONR : String = '') : String;
function TdmUtils.GetCWMessage(Key,call,rst_s,stx,stx_str,HisName,HelloMsg, text : String) : String;
{
%mc - my callsign
%mn - my name
%mq - my qth
%ml - my locator
%nr - qso number
%r - rst send
%rs - rst send sends N instead of 9
%rs - rst send sends N instead of 9 (sends also 0 as T, but does not exist in normal report)
%n - name
%c - callsign
%h - greeting GM/GA/GE calculated from the %c station location time
%h - greeting GM/GA/GE calculated from the station location time
%xn - contest exchenge serial number
%xm - contest exchange message
%xns - contest exchenge serial number sends 9->N and 0->T
%xrs - full contest exchange RST+SerialNR+Message sends 9->N and 0->T.
Can be used "always" as if serNR and/or Message are empty just sends plain report.
if text is not empty and we didn't send any key (F1 etc.) we can
use this function to prepare every text wee need to send
@ -2627,6 +2633,9 @@ var
myname : String = '';
myqth : String = '';
rst_sh : String = '';
stx_sh : String = '';
con_ex : String = '';
begin
mycall := cqrini.ReadString('Station', 'Call', '');
myloc := cqrini.ReadString('Station', 'LOC', '');
@ -2637,22 +2646,33 @@ begin
else
Result := text;
rst_sh := StringReplace(rst_s,'9','N',[rfReplaceAll, rfIgnoreCase]);
rst_sh := StringReplace(rst_sh,'0','T',[rfReplaceAll, rfIgnoreCase]);//replace zeros, too
rst_sh := StringReplace(rst_s,'9','N',[rfReplaceAll, rfIgnoreCase]);
rst_sh := StringReplace(rst_sh,'0','T',[rfReplaceAll, rfIgnoreCase]);//replace zeros, too
Result := StringReplace(Result,'%mc',mycall,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%ml',myloc,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%mn',myname,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%mq',myqth,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%nr',QSONR,[rfReplaceAll, rfIgnoreCase]);
stx_sh := StringReplace(stx,'9','N',[rfReplaceAll, rfIgnoreCase]);
stx_sh := StringReplace(stx_sh,'0','T',[rfReplaceAll, rfIgnoreCase]);//replace zeros, too
Result := StringReplace(Result,'%rs',rst_sh,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%r',rst_s,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%n',HisName,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%c',call,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%h',HelloMsg,[rfReplaceAll, rfIgnoreCase]);
con_ex := rst_sh;
if stx_sh <>'' then con_ex:=con_ex+' '+stx_sh;
if stx_str <>'' then con_ex:=con_ex+' '+stx_str;
if dmData.DebugLevel>=1 then Writeln('Sending:',Result)
Result := StringReplace(Result,'%mc',mycall,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%ml',myloc,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%mn',myname,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%mq',myqth,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%xrs',con_ex,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%rs',rst_sh,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%r',rst_s,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%n',HisName,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%c',call,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%h',HelloMsg,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%xns',stx_sh,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%xn',stx,[rfReplaceAll, rfIgnoreCase]);
Result := StringReplace(Result,'%xm',stx_str,[rfReplaceAll, rfIgnoreCase]);
if dmData.DebugLevel>=1 then Writeln('Sending:',Result)
end;
function TdmUtils.RigGetcmd(r : String) : String;

View File

@ -10,7 +10,7 @@ object frmAddRadioMemory: TfrmAddRadioMemory
OnCreate = FormCreate
OnShow = FormShow
Position = poOwnerFormCenter
LCLVersion = '1.8.4.0'
LCLVersion = '2.0.0.4'
object lblFreq: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
@ -102,7 +102,7 @@ object frmAddRadioMemory: TfrmAddRadioMemory
BorderSpacing.Right = 12
Caption = 'OK'
OnClick = Button1Click
TabOrder = 3
TabOrder = 4
end
object Button2: TButton
AnchorSideTop.Control = Button1
@ -119,7 +119,7 @@ object frmAddRadioMemory: TfrmAddRadioMemory
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
TabOrder = 5
end
object lblInfo: TLabel
AnchorSideLeft.Control = Owner
@ -144,6 +144,6 @@ object frmAddRadioMemory: TfrmAddRadioMemory
Width = 284
BorderSpacing.Left = 12
MaxLength = 25
TabOrder = 5
TabOrder = 3
end
end

View File

@ -1,14 +1,13 @@
object frmAdifImport: TfrmAdifImport
Left = 93
Height = 367
Top = 336
Width = 444
ActiveControl = chkLotOfQSO
Left = 308
Height = 365
Top = 413
Width = 387
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Importing ADIF file'
ClientHeight = 367
ClientWidth = 444
ClientHeight = 365
ClientWidth = 387
Icon.Data = {
BE0C00000000010001002020000001001800A80C000016000000280000002000
0000400000000100180000000000000C00006400000064000000000000000000
@ -117,186 +116,30 @@ object frmAdifImport: TfrmAdifImport
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.0.0.2'
object Label1: TLabel
Left = 6
Height = 15
Top = 3
Width = 23
Caption = 'File:'
ParentColor = False
end
object lblFileName: TLabel
Left = 38
Height = 15
Top = 3
Width = 68
Caption = 'lblFileName'
ParentColor = False
end
object Label2: TLabel
Left = 6
Height = 15
Top = 30
Width = 40
Caption = 'Errors:'
ParentColor = False
end
object Label3: TLabel
Left = 152
Height = 15
Top = 30
Width = 64
Caption = 'Importing:'
ParentColor = False
end
object lblErrors: TLabel
Left = 64
Height = 15
Top = 30
Width = 50
Alignment = taRightJustify
Caption = 'lblErrors'
ParentColor = False
end
object lblCount: TLabel
Left = 232
Height = 15
Top = 30
Width = 50
Caption = 'lblCount'
ParentColor = False
end
object Label4: TLabel
Left = 8
Height = 15
Top = 128
Width = 55
Caption = 'Remarks:'
ParentColor = False
end
object lblComplete: TLabel
Left = 373
Height = 15
Top = 146
Width = 62
Caption = 'Complete!'
Font.Color = clRed
ParentColor = False
ParentFont = False
Visible = False
end
object Label5: TLabel
Left = 8
Height = 15
Top = 192
Width = 66
Caption = 'QTH Profile'
ParentColor = False
end
object lblErrorLog: TLabel
Left = 6
Height = 1
Top = 56
Width = 1
ParentColor = False
end
object btnImport: TButton
Left = 368
Height = 25
Top = 187
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.InnerBorder = 4
Caption = 'Import'
OnClick = btnImportClick
TabOrder = 0
end
object edtRemarks: TEdit
Left = 8
Height = 32
Top = 152
Width = 145
TabOrder = 1
end
object cmbProfiles: TComboBox
Left = 8
Height = 32
Top = 216
Width = 334
ItemHeight = 0
TabOrder = 2
Text = 'cmbProfiles'
end
object chkLotOfQSO: TCheckBox
Left = 8
Height = 23
Top = 88
Width = 276
Caption = 'ADIF file contains more than 10 000 QSO'
TabOrder = 3
end
object sb: TStatusBar
Left = 0
Height = 17
Top = 350
Width = 444
Panels = <
item
Width = 200
end>
SimplePanel = False
end
object btnClose: TButton
Left = 368
Height = 25
Top = 219
Width = 75
Caption = 'Close'
ModalResult = 2
TabOrder = 5
end
object chkFilterDateRange: TCheckBox
AnchorSideTop.Control = cmbProfiles
AnchorSideTop.Side = asrBottom
Left = 8
Height = 23
Top = 266
Width = 202
BorderSpacing.Top = 18
Caption = 'Filter: only import date range'
OnChange = chkFilterDateRangeChange
TabOrder = 6
end
LCLVersion = '2.0.0.4'
object pnlFilterDateRange: TPanel
AnchorSideTop.Control = chkFilterDateRange
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = pnlAll
AnchorSideTop.Side = asrBottom
Left = 8
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 45
Top = 295
Width = 334
BorderSpacing.Top = 6
Top = 287
Width = 387
Alignment = taLeftJustify
Anchors = [akTop, akLeft, akRight]
BevelOuter = bvNone
ClientHeight = 45
ClientWidth = 334
ClientWidth = 387
Enabled = False
TabOrder = 7
object lblDateFrom: TLabel
AnchorSideTop.Control = edtDateFrom
AnchorSideTop.Side = asrCenter
Left = 6
Height = 15
Top = 15
Width = 28
Caption = 'from'
ParentColor = False
end
TabOrder = 0
object lblDateTo: TLabel
AnchorSideLeft.Control = edtDateFrom
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDateTo
AnchorSideTop.Control = pnlFilterDateRange
AnchorSideTop.Side = asrCenter
Left = 155
Left = 158
Height = 15
Top = 15
Width = 12
@ -307,14 +150,16 @@ object frmAdifImport: TfrmAdifImport
object edtDateFrom: TDateEdit
AnchorSideLeft.Control = lblDateFrom
AnchorSideLeft.Side = asrBottom
Left = 40
AnchorSideTop.Control = pnlFilterDateRange
AnchorSideTop.Side = asrCenter
Left = 43
Height = 32
Top = 6
Width = 103
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
DateOrder = doYMd
ButtonWidth = 23
BorderSpacing.Left = 6
BorderSpacing.Left = 12
NumGlyphs = 1
MaxLength = 10
TabOrder = 0
@ -323,82 +168,331 @@ object frmAdifImport: TfrmAdifImport
object edtDateTo: TDateEdit
AnchorSideLeft.Control = lblDateTo
AnchorSideLeft.Side = asrBottom
Left = 173
AnchorSideTop.Control = pnlFilterDateRange
AnchorSideTop.Side = asrCenter
Left = 182
Height = 32
Top = 6
Width = 103
CalendarDisplaySettings = [dsShowHeadings, dsShowDayNames]
DateOrder = doYMd
ButtonWidth = 23
BorderSpacing.Left = 6
BorderSpacing.Left = 12
NumGlyphs = 1
MaxLength = 10
TabOrder = 1
Text = ' . . '
end
object lblDateFrom: TLabel
AnchorSideLeft.Control = pnlFilterDateRange
AnchorSideTop.Control = pnlFilterDateRange
AnchorSideTop.Side = asrCenter
Left = 3
Height = 15
Top = 15
Width = 28
BorderSpacing.Left = 3
Caption = 'from'
ParentColor = False
end
end
object lblFilteredOut: TLabel
AnchorSideTop.Side = asrBottom
Left = 298
Height = 15
Top = 30
Width = 72
BorderSpacing.Top = 6
Caption = 'Filtered out:'
ParentColor = False
object pnlAll: TPanel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 287
Top = 0
Width = 387
Anchors = [akTop, akLeft, akRight]
ClientHeight = 287
ClientWidth = 387
TabOrder = 1
object lbFile: TLabel
AnchorSideLeft.Control = pnlAll
AnchorSideTop.Control = pnlAll
Left = 4
Height = 15
Top = 13
Width = 23
BorderSpacing.Left = 3
BorderSpacing.Top = 12
Caption = 'File:'
ParentColor = False
end
object lblFileName: TLabel
AnchorSideLeft.Control = lbFile
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lbFile
Left = 33
Height = 15
Top = 13
Width = 68
BorderSpacing.Left = 6
Caption = 'lblFileName'
ParentColor = False
end
object lblError: TLabel
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = lbFile
AnchorSideTop.Side = asrBottom
Left = 4
Height = 15
Top = 34
Width = 40
BorderSpacing.Top = 6
Caption = 'Errors:'
ParentColor = False
end
object lblImport: TLabel
AnchorSideLeft.Control = lblErrors
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblError
Left = 126
Height = 15
Top = 34
Width = 64
BorderSpacing.Left = 26
Caption = 'Importing:'
ParentColor = False
end
object lblErrors: TLabel
AnchorSideLeft.Control = lblError
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblError
Left = 50
Height = 15
Top = 34
Width = 50
Alignment = taRightJustify
BorderSpacing.Left = 6
Caption = 'lblErrors'
ParentColor = False
end
object lblCount: TLabel
AnchorSideLeft.Control = lblImport
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblImport
Left = 196
Height = 15
Top = 34
Width = 50
BorderSpacing.Left = 6
Caption = 'lblCount'
ParentColor = False
end
object lblRemaks: TLabel
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = chkLotOfQSO
AnchorSideTop.Side = asrBottom
Left = 4
Height = 15
Top = 133
Width = 55
BorderSpacing.Top = 6
Caption = 'Remarks:'
ParentColor = False
end
object lblComplete: TLabel
AnchorSideTop.Control = lbFile
AnchorSideRight.Control = pnlAll
AnchorSideRight.Side = asrBottom
Left = 318
Height = 15
Top = 34
Width = 62
Anchors = [akRight]
BorderSpacing.Right = 6
Caption = 'Complete!'
Font.Color = clRed
ParentColor = False
ParentFont = False
Visible = False
end
object lblQthProfile: TLabel
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = edtRemarks
AnchorSideTop.Side = asrBottom
Left = 4
Height = 15
Top = 188
Width = 66
BorderSpacing.Top = 6
Caption = 'QTH Profile'
ParentColor = False
end
object lblErrorLog: TLabel
Left = 6
Height = 1
Top = 56
Width = 1
ParentColor = False
end
object btnImport: TButton
AnchorSideTop.Control = chkNoCheckOnDuplicates
AnchorSideRight.Control = pnlAll
AnchorSideRight.Side = asrBottom
Left = 305
Height = 25
Top = 81
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
BorderSpacing.InnerBorder = 4
Caption = 'Import'
OnClick = btnImportClick
TabOrder = 0
end
object edtRemarks: TEdit
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = lblRemaks
AnchorSideTop.Side = asrBottom
Left = 4
Height = 34
Top = 148
Width = 145
AutoSize = False
TabOrder = 1
end
object btnClose: TButton
AnchorSideTop.Control = btnImport
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = pnlAll
AnchorSideRight.Side = asrBottom
Left = 305
Height = 25
Top = 112
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'Close'
ModalResult = 2
TabOrder = 2
end
object chkFilterDateRange: TCheckBox
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = cmbProfiles
AnchorSideTop.Side = asrBottom
Left = 4
Height = 23
Top = 241
Width = 202
BorderSpacing.Top = 6
Caption = 'Filter: only import date range'
OnChange = chkFilterDateRangeChange
TabOrder = 3
end
object lblFilteredOut: TLabel
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = lblError
AnchorSideTop.Side = asrBottom
Left = 4
Height = 15
Top = 55
Width = 72
BorderSpacing.Top = 6
Caption = 'Filtered out:'
ParentColor = False
end
object cmbProfiles: TComboBox
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = lblQthProfile
AnchorSideTop.Side = asrBottom
Left = 4
Height = 32
Top = 203
Width = 334
ItemHeight = 0
TabOrder = 4
end
object chkLotOfQSO: TCheckBox
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = chkNoCheckOnDuplicates
AnchorSideTop.Side = asrBottom
Left = 4
Height = 23
Top = 104
Width = 276
Caption = 'ADIF file contains more than 10 000 QSO'
TabOrder = 5
end
object lblFilteredOutCount: TLabel
AnchorSideLeft.Control = lblFilteredOut
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblFilteredOut
Left = 82
Height = 15
Top = 55
Width = 116
BorderSpacing.Left = 6
Caption = 'lblFilteredOutCount'
ParentColor = False
end
object chkNoCheckOnDuplicates: TCheckBox
AnchorSideLeft.Control = lbFile
AnchorSideTop.Control = lblError
AnchorSideTop.Side = asrBottom
Left = 4
Height = 23
Top = 81
Width = 266
BorderSpacing.Top = 32
Caption = 'No Check For Duplicates (faster Import)'
TabOrder = 6
end
end
object lblFilteredOutCount: TLabel
AnchorSideLeft.Control = lblFilteredOut
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblFilteredOut
Left = 388
Height = 15
Top = 30
Width = 116
BorderSpacing.Left = 18
Caption = 'lblFilteredOutCount'
ParentColor = False
end
object chkNoCheckOnDuplicates: TCheckBox
Left = 8
Height = 23
Top = 64
Width = 266
Caption = 'No Check For Duplicates (faster Import)'
TabOrder = 8
object sb: TStatusBar
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideBottom.Control = Owner
Left = 0
Height = 25
Top = 340
Width = 387
AutoSize = False
BorderSpacing.InnerBorder = 3
Panels = <
item
Width = 200
end>
SimplePanel = False
end
object tr: TSQLTransaction
Active = False
Action = caNone
left = 118
top = 184
left = 152
top = 144
end
object Q1: TSQLQuery
FieldDefs = <>
Transaction = tr
Params = <>
left = 170
top = 184
left = 184
top = 144
end
object Q2: TSQLQuery
FieldDefs = <>
Transaction = tr
Params = <>
left = 219
top = 184
left = 216
top = 144
end
object Q3: TSQLQuery
FieldDefs = <>
Transaction = tr
Params = <>
left = 267
top = 184
left = 248
top = 144
end
object Q4: TSQLQuery
FieldDefs = <>
Transaction = tr
Params = <>
left = 315
top = 184
left = 280
top = 144
end
end

View File

@ -64,6 +64,7 @@ type TnewQSOEntry=record //represents a new qso entry in the log
SRX_STRING:string[250];
STX:string[6];
STX_STRING:string[250];
CONTEST_ID:string[250];
TIME_OFF:string[5];
TIME_ON:string[5];
TX_PWR:string[5];
@ -87,29 +88,30 @@ type
{ TfrmAdifImport }
TfrmAdifImport = class(TForm)
btnImport: TButton;
btnClose: TButton;
chkNoCheckOnDuplicates: TCheckBox;
btnImport: TButton;
chkFilterDateRange: TCheckBox;
chkLotOfQSO: TCheckBox;
chkNoCheckOnDuplicates: TCheckBox;
cmbProfiles: TComboBox;
edtDateFrom: TDateEdit;
edtDateTo: TDateEdit;
edtRemarks: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
lblFilteredOut: TLabel;
lblFilteredOutCount: TLabel;
lblDateFrom: TLabel;
lblDateTo: TLabel;
lblErrorLog: TLabel;
lbFile: TLabel;
lblComplete: TLabel;
lblCount: TLabel;
lblDateFrom: TLabel;
lblError: TLabel;
lblErrorLog: TLabel;
lblErrors: TLabel;
lblFileName: TLabel;
lblFilteredOut: TLabel;
lblFilteredOutCount: TLabel;
lblImport: TLabel;
lblDateTo: TLabel;
lblQthProfile: TLabel;
lblRemaks: TLabel;
pnlAll: TPanel;
pnlFilterDateRange: TPanel;
Q1: TSQLQuery;
Q2: TSQLQuery;
@ -122,6 +124,7 @@ type
procedure FormShow(Sender: TObject);
procedure btnImportClick(Sender: TObject);
private
AbortImport : boolean;
ERR_FILE : String;
WrongRecNr : Integer;
RecNR : Integer;
@ -265,6 +268,7 @@ function TfrmAdifImport.fillTypeVariableWithTagData(h:longint;var data:string;va
h_SRX_STRING:d.SRX_STRING:=data;
h_STX:d.STX:=data;
h_STX_STRING:d.STX_STRING:=data;
h_CONTEST_ID:d.CONTEST_ID:=data;
h_TIME_OFF:d.TIME_OFF:=data;
h_TIME_ON:d.TIME_ON:=data;
h_TX_PWR:d.TX_PWR:=data;
@ -477,24 +481,30 @@ begin
dmData.Q.Close;
dmData.Q.SQL.Text := 'SELECT COUNT(*) FROM cqrlog_main WHERE qsodate = ' + QuotedStr(d.QSO_DATE) +
' AND time_on = ' + QuotedStr(d.TIME_ON) + ' AND callsign = '+QuotedStr(d.CALL);
if dmData.DebugLevel >=1 then
begin
Writeln(dmData.Q.SQL.Text)
end;
if dmData.DebugLevel >=1 then Writeln(dmData.Q.SQL.Text);
if dmData.trQ.Active then
dmData.trQ.Rollback;
dmData.trQ.StartTransaction;
dmData.Q.Open;
if dmData.Q.Fields[0].AsInteger > 0 then
begin
if Application.MessageBox('It looks like this QSOs are in the log.'#13'Do you really want to import it again?',
'Question',MB_ICONQUESTION + MB_YESNO) = idNo then
begin
btnImport.Enabled := True;
dmData.Q.Close();
dmData.trQ.Rollback;
exit
end
case Application.MessageBox('It looks like this QSO is in the log.'#13'Do you really want to import it again?',
'Question',MB_ICONQUESTION + MB_YESNOCANCEL) of
idNo :begin
btnImport.Enabled := True;
dmData.Q.Close();
dmData.trQ.Rollback;
exit;
end;
idCancel :begin
btnImport.Enabled := True;
dmData.Q.Close();
dmData.trQ.Rollback;
AbortImport :=true;
exit;
end;
end;
end;
dmData.Q.Close();
dmData.trQ.Rollback
@ -521,12 +531,13 @@ begin
'rst_s,rst_r,name,qth,qsl_s,qsl_r,qsl_via,iota,pwr,itu,waz,loc,my_loc,'+
'remarks,county,adif,idcall,award,band,state,cont,profile,lotw_qslsdate,lotw_qsls,'+
'lotw_qslrdate,lotw_qslr,qsls_date,qslr_date,eqsl_qslsdate,eqsl_qsl_sent,'+
'eqsl_qslrdate,eqsl_qsl_rcvd, prop_mode, satellite, rxfreq) values('+
'eqsl_qslrdate,eqsl_qsl_rcvd, prop_mode, satellite, rxfreq, stx, srx, stx_string, srx_string, contestname) values('+
':qsodate,:time_on,:time_off,:callsign,:freq,:mode,:rst_s,:rst_r,:name,:qth,'+
':qsl_s,:qsl_r,:qsl_via,:iota,:pwr,:itu,:waz,:loc,:my_loc,:remarks,:county,:adif,'+
':idcall,:award,:band,:state,:cont,:profile,:lotw_qslsdate,:lotw_qsls,:lotw_qslrdate,'+
':lotw_qslr,:qsls_date,:qslr_date,:eqsl_qslsdate,:eqsl_qsl_sent,:eqsl_qslrdate,'+
':eqsl_qsl_rcvd, :prop_mode, :satellite, :rxfreq)';
':eqsl_qsl_rcvd, :prop_mode, :satellite, :rxfreq, :stx, :srx, :stx_string, :srx_string,'+
':contestname)';
if dmData.DebugLevel >=1 then Writeln(Q1.SQL.Text);
Q1.Prepare;
Q1.Params[0].AsString := d.QSO_DATE;
@ -645,6 +656,12 @@ begin
else
Q1.Params[40].AsFloat := 0;
Q1.Params[41].AsString := d.STX;
Q1.Params[42].AsString := d.SRX;
Q1.Params[43].AsString := d.STX_STRING;
Q1.Params[44].AsString := d.SRX_STRING;
Q1.Params[45].AsString := d.CONTEST_ID;
if dmData.DebugLevel >=1 then Writeln(Q1.SQL.Text);
Q1.ExecSQL;
inc(RecNR);
@ -670,6 +687,7 @@ var
ErrText : String = '';
tmp : String='';
begin
AbortImport := false;
lblComplete.Visible := False;
GlobalProfile := dmData.GetNRFromProfile(cmbProfiles.Text);
FMyPower := cqrini.ReadString('NewQSO', 'PWR', '5 W');
@ -695,14 +713,14 @@ begin
sb.Panels[0].Text := 'Importing data ...';
Application.ProcessMessages;
Repaint;
while not eof(textFileIn) do
while not eof(textFileIn) and not (AbortImport)do
begin
readln(textFileIn,oneTextRow);
if Pos('<EOH>',UpperCase(oneTextRow)) > 0 then
tmp := ''
else
tmp := tmp + oneTextRow;
while getNextAdifTag(oneTextRow,adifTag,data) do
while getNextAdifTag(oneTextRow,adifTag,data) and not (AbortImport) do
begin
h:=generateAdifTagHash(adifTag);
if (h=h_EOH) or (h=h_EOR) then
@ -729,7 +747,7 @@ begin
tr.Commit;
dt := dt - now;
DecodeTime(dt,hh,m,s,ms);
WriteLn('It takes about ',m,' minutes and ',s,' seconds ',ms,' milliseconds');
if dmData.DebugLevel >=1 then WriteLn('It takes about ',m,' minutes and ',s,' seconds ',ms,' milliseconds');
lblCount.Caption := IntToStr(RecNR);
lblFilteredOut.Visible := FFilterByDate;
lblFilteredOutCount.Visible := FFilterByDate;
@ -803,7 +821,7 @@ var
i : Integer;
begin
for i:= 0 to Length(lines)-1 do
WriteLn(lines[i]);
if dmData.DebugLevel >=1 then WriteLn(lines[i]);
if FileExists(dmData.UsrHomeDir + ERR_FILE) then
begin
@ -839,3 +857,4 @@ end;
end.

View File

@ -35,8 +35,9 @@ uses dUtils,fNewQSO;
procedure TfrmCWKeys.SendCWMessage(cwkey : String);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(cwkey,frmNewQSO.edtCall.Text,frmNewQSO.edtHisRST.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''))
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(cwkey,frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWKeys.FormClose(Sender: TObject; var CloseAction: TCloseAction);

View File

@ -127,7 +127,8 @@ end;
procedure TfrmCWType.btnF1MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F1',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF1MouseLeave(Sender: TObject);
@ -138,19 +139,22 @@ end;
procedure TfrmCWType.btnF2Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F2',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF10MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F10',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF10Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F10',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF10MouseLeave(Sender: TObject);
@ -161,13 +165,15 @@ end;
procedure TfrmCWType.btnF1Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F1',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF2MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F2',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF2MouseLeave(Sender: TObject);
@ -178,13 +184,15 @@ end;
procedure TfrmCWType.btnF3Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F3',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF3MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F3',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'')
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF3MouseLeave(Sender: TObject);
@ -195,13 +203,15 @@ end;
procedure TfrmCWType.btnF4Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F4',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF4MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F4',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'')
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF4MouseLeave(Sender: TObject);
@ -212,13 +222,15 @@ end;
procedure TfrmCWType.btnF5Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F5',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF5MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F5',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'')
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF5MouseLeave(Sender: TObject);
@ -229,13 +241,15 @@ end;
procedure TfrmCWType.btnF6Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F6',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF6MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F6',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF6MouseLeave(Sender: TObject);
@ -246,13 +260,15 @@ end;
procedure TfrmCWType.btnF7Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F7',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF7MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F7',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'')
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF7MouseLeave(Sender: TObject);
@ -263,13 +279,15 @@ end;
procedure TfrmCWType.btnF8Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F8',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF8MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F8',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF8MouseLeave(Sender: TObject);
@ -280,13 +298,15 @@ end;
procedure TfrmCWType.btnF9Click(Sender: TObject);
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage('F9',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
procedure TfrmCWType.btnF9MouseEnter(Sender: TObject);
begin
frmCWType.lblToShowMouseOverText.Caption:=dmUtils.GetCWMessage('F9',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfrmCWType.btnF9MouseLeave(Sender: TObject);
@ -495,7 +515,8 @@ begin
if (key >= VK_F1) and (key <= VK_F10) then
begin
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(dmUtils.GetDescKeyFromCode(key),frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''))
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
if Key = VK_ESCAPE then

View File

@ -1,23 +1,26 @@
object frmContest: TfrmContest
Left = 474
Height = 111
Top = 429
Width = 696
Height = 127
Top = 155
Width = 688
HelpType = htKeyword
HelpKeyword = 'help/contest.html'
Caption = 'Contest'
ClientHeight = 111
ClientWidth = 696
ClientHeight = 127
ClientWidth = 688
OnClose = FormClose
OnCreate = FormCreate
OnHide = FormHide
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '1.6.4.0'
LCLVersion = '2.0.0.4'
object edtCall: TEdit
Left = 10
Height = 32
Top = 27
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = lblCall
AnchorSideTop.Side = asrBottom
Left = 17
Height = 34
Top = 53
Width = 140
AutoSelect = False
CharCase = ecUppercase
@ -27,182 +30,257 @@ object frmContest: TfrmContest
TabOrder = 0
end
object edtRSTs: TEdit
Left = 151
Height = 32
Top = 27
AnchorSideLeft.Control = edtCall
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtCall
Left = 157
Height = 34
Top = 53
Width = 50
OnKeyDown = edtCallKeyDown
TabOrder = 5
end
object edtSTX: TEdit
Left = 202
Height = 32
Top = 27
AnchorSideLeft.Control = edtRSTs
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtRSTs
Left = 207
Height = 34
Hint = 'contest serial number sent, max 6 characters'
Top = 53
Width = 50
MaxLength = 6
OnExit = edtSTXExit
OnKeyDown = edtCallKeyDown
OnKeyPress = edtSTXKeyPress
ParentShowHint = False
ShowHint = True
TabOrder = 6
end
object edtSTX2: TEdit
Left = 253
Height = 32
Top = 27
object edtSTX_str: TEdit
AnchorSideLeft.Control = edtSTX
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtSTX
Left = 257
Height = 34
Hint = 'contest exchange message sent, max 50 characters'
Top = 53
Width = 100
OnExit = edtSTX2Exit
MaxLength = 50
OnExit = edtSTX_strExit
OnKeyDown = edtCallKeyDown
ParentShowHint = False
ShowHint = True
TabOrder = 7
end
object edtRSTr: TEdit
Left = 370
Height = 32
Top = 27
AnchorSideLeft.Control = edtSTX_str
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtSTX_str
Left = 373
Height = 34
Top = 53
Width = 50
BorderSpacing.Left = 16
OnKeyDown = edtCallKeyDown
TabOrder = 4
end
object edtSRX: TEdit
Left = 421
Height = 32
Top = 27
AnchorSideLeft.Control = edtRSTr
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtRSTr
Left = 423
Height = 34
Hint = 'contest serial number received, max 6 characters'
Top = 53
Width = 50
MaxLength = 6
OnExit = edtSRXExit
OnKeyDown = edtCallKeyDown
OnKeyPress = edtSTXKeyPress
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object btSave: TButton
Left = 592
AnchorSideLeft.Control = edtSRX2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblMSGr
Left = 589
Height = 30
Top = 8
Top = 36
Width = 80
BorderSpacing.Left = 16
Caption = 'Save QSO'
OnClick = btSaveClick
TabOrder = 3
end
object edtSRX2: TEdit
Left = 472
Height = 32
Top = 27
AnchorSideLeft.Control = edtSRX
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtRSTr
Left = 473
Height = 34
Hint = 'contest exchange message sent, max 50 characters'
Top = 53
Width = 100
CharCase = ecUppercase
MaxLength = 50
OnKeyDown = edtCallKeyDown
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object lblCall: TLabel
Left = 16
Height = 15
Top = 10
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = cmbContestName
AnchorSideTop.Side = asrBottom
Left = 17
Height = 17
Top = 36
Width = 25
BorderSpacing.Top = 1
Caption = 'Call'
ParentColor = False
end
object lblRSTs: TLabel
Left = 160
Height = 15
Top = 10
AnchorSideTop.Control = lblCall
Left = 161
Height = 17
Top = 36
Width = 36
Caption = 'RST s'
ParentColor = False
end
object lblMSGs: TLabel
Left = 256
Height = 15
Top = 10
Width = 40
AnchorSideTop.Control = lblNRs
Left = 257
Height = 17
Top = 36
Width = 41
Caption = 'MSG s'
ParentColor = False
end
object lblRSTr: TLabel
Left = 376
Height = 15
Top = 10
AnchorSideTop.Control = lblMSGs
Left = 377
Height = 17
Top = 36
Width = 34
Caption = 'RST r'
ParentColor = False
end
object lblNRr: TLabel
Left = 424
Height = 15
Top = 10
AnchorSideTop.Control = lblRSTr
Left = 425
Height = 17
Top = 36
Width = 28
Caption = 'NR r'
ParentColor = False
end
object lblMSGr: TLabel
Left = 480
Height = 15
Top = 10
Width = 38
AnchorSideTop.Control = lblNRr
Left = 481
Height = 17
Top = 36
Width = 39
Caption = 'MSG r'
ParentColor = False
end
object chNRInc: TCheckBox
Left = 202
AnchorSideLeft.Control = edtSTX
AnchorSideTop.Control = chTrueRST
Left = 207
Height = 23
Top = 56
Top = 87
Width = 45
Caption = 'Inc'
OnClick = chNRIncClick
TabOrder = 8
TabStop = False
end
object lblNRs: TLabel
Left = 208
Height = 15
Top = 10
AnchorSideTop.Control = lblRSTs
Left = 209
Height = 17
Top = 36
Width = 30
Caption = 'NR s'
ParentColor = False
end
object chLoc: TCheckBox
Left = 472
AnchorSideLeft.Control = edtSRX2
AnchorSideTop.Control = chNoNr
Left = 473
Height = 23
Top = 56
Width = 100
Top = 87
Width = 101
Caption = 'MSG is LOC'
TabOrder = 9
TabStop = False
end
object chSpace: TCheckBox
Left = 16
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = edtCall
AnchorSideTop.Side = asrBottom
Left = 17
Height = 23
Top = 56
Top = 87
Width = 111
Caption = 'SPACE is TAB'
TabOrder = 10
TabStop = False
end
object chNoNr: TCheckBox
Left = 424
AnchorSideLeft.Control = edtSRX
AnchorSideTop.Control = chNRInc
Left = 423
Height = 23
Top = 56
Top = 87
Width = 44
Caption = 'No'
OnChange = chNoNrChange
TabOrder = 11
TabStop = False
end
object chTrueRST: TCheckBox
Left = 153
AnchorSideLeft.Control = edtRSTs
AnchorSideTop.Control = chSpace
Left = 157
Height = 23
Top = 56
Top = 87
Width = 45
Caption = 'Tru'
OnChange = chTrueRSTChange
TabOrder = 12
TabStop = False
end
object Button1: TButton
Left = 592
AnchorSideLeft.Control = btSave
AnchorSideTop.Control = btSave
AnchorSideTop.Side = asrBottom
Left = 589
Height = 30
Top = 48
Top = 68
Width = 80
BorderSpacing.Top = 2
Caption = 'Clear all'
OnClick = Button1Click
TabOrder = 13
end
object btnHelp: TSpeedButton
Left = 672
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 660
Height = 22
Hint = 'Help'
Top = 89
Width = 23
Anchors = [akRight, akBottom]
Top = 3
Width = 25
Anchors = [akTop, akRight, akBottom]
BorderSpacing.Top = 3
BorderSpacing.Right = 3
Glyph.Data = {
F6030000424DF6030000000000003600000028000000100000000F0000000100
200000000000C003000064000000640000000000000000000000FFFFFF00FFFF
@ -239,10 +317,267 @@ object frmContest: TfrmContest
}
OnClick = btnHelpClick
end
object lblContestName: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = cmbContestName
Left = 17
Height = 17
Top = 1
Width = 87
BorderSpacing.Left = 17
Caption = 'Contestname'
ParentColor = False
end
object cmbContestName: TComboBox
AnchorSideLeft.Control = lblContestName
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Owner
Left = 110
Height = 34
Hint = 'contestname, choose ADIF contest_id via combobox or type freestyle max 40 characters'
Top = 1
Width = 432
AutoComplete = True
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
BorderSpacing.Left = 6
BorderSpacing.Top = 1
ItemHeight = 0
Items.Strings = (
'070-160M-SPRINT'
'070-3-DAY'
'070-31-FLAVORS'
'070-40M-SPRINT'
'070-80M-SPRINT'
'070-PSKFEST'
'070-ST-PATS-DAY'
'070-VALENTINE-SPRINT'
'10-RTTY'
'1010-OPEN-SEASON'
'7QP'
'AL-QSO-PARTY'
'ALL-ASIAN-DX-CW'
'ALL-ASIAN-DX-PHONE'
'ANARTS-RTTY'
'ANATOLIAN-RTTY'
'AP-SPRINT'
'AR-QSO-PARTY'
'ARI-DX'
'ARRL-10'
'ARRL-160'
'ARRL-222'
'ARRL-DX-CW'
'ARRL-DX-SSB'
'ARRL-EME'
'ARRL-FIELD-DAY'
'ARRL-RR-CW'
'ARRL-RR-RTTY'
'ARRL-RR-SSB'
'ARRL-RTTY'
'ARRL-SCR'
'ARRL-SS-CW'
'ARRL-SS-SSB'
'ARRL-UHF-AUG'
'ARRL-VHF-JAN'
'ARRL-VHF-JUN'
'ARRL-VHF-SEP'
'AZ-QSO-PARTY'
'BARTG-RTTY'
'BARTG-SPRINT'
'BC-QSO-PARTY'
'CA-QSO-PARTY'
'CIS-DX'
'CO-QSO-PARTY'
'CQ-160-CW'
'CQ-160-SSB'
'CQ-M'
'CQ-VHF'
'CQ-WPX-CW'
'CQ-WPX-RTTY'
'CQ-WPX-SSB'
'CQ-WW-CW'
'CQ-WW-RTTY'
'CQ-WW-SSB'
'CT-QSO-PARTY'
'CVA-DX-CW'
'CVA-DX-SSB'
'CWOPS-CW-OPEN'
'CWOPS-CWT'
'DARC-WAEDC-CW'
'DARC-WAEDC-RTTY'
'DARC-WAEDC-SSB'
'DARC-WAG'
'DE-QSO-PARTY'
'DL-DX-RTTY'
'DMC-RTTY'
'EA-CNCW'
'EA-DME'
'EA-PSK63'
'EA-RTTY (import-only)'
'EA-SMRE-CW'
'EA-SMRE-SSB'
'EA-VHF-ATLANTIC'
'EA-VHF-COM'
'EA-VHF-COSTA-SOL'
'EA-VHF-EA'
'EA-VHF-EA1RCS'
'EA-VHF-QSL'
'EA-VHF-SADURNI'
'EA-WW-RTTY'
'EPC-PSK63'
'EU Sprint'
'EU-HF'
'EU-PSK-DX'
'EUCW160M'
'FALL SPRINT'
'FL-QSO-PARTY'
'GA-QSO-PARTY'
'HA-DX'
'HELVETIA'
'HI-QSO-PARTY'
'HOLYLAND'
'IA-QSO-PARTY'
'IARU-FIELD-DAY'
'IARU-HF'
'ID-QSO-PARTY'
'IL QSO Party'
'IN-QSO-PARTY'
'JARTS-WW-RTTY'
'JIDX-CW'
'JIDX-SSB'
'JT-DX-RTTY'
'KS-QSO-PARTY'
'KY-QSO-PARTY'
'LA-QSO-PARTY'
'LDC-RTTY'
'LZ DX'
'MAR-QSO-PARTY'
'MD-QSO-PARTY'
'ME-QSO-PARTY'
'MI-QSO-PARTY'
'MIDATLANTIC-QSO-PARTY'
'MN-QSO-PARTY'
'MO-QSO-PARTY'
'MS-QSO-PARTY'
'MT-QSO-PARTY'
'NA-SPRINT-CW'
'NA-SPRINT-RTTY'
'NA-SPRINT-SSB'
'NAQP-CW'
'NAQP-RTTY'
'NAQP-SSB'
'NC-QSO-PARTY'
'ND-QSO-PARTY'
'NE-QSO-PARTY'
'NEQP'
'NH-QSO-PARTY'
'NJ-QSO-PARTY'
'NM-QSO-PARTY'
'NRAU-BALTIC-CW'
'NRAU-BALTIC-SSB'
'NV-QSO-PARTY'
'NY-QSO-PARTY'
'OCEANIA-DX-CW'
'OCEANIA-DX-SSB'
'OH-QSO-PARTY'
'OK-DX-RTTY'
'OK-OM-DX'
'OK-QSO-PARTY'
'OMISS-QSO-PARTY'
'ON-QSO-PARTY'
'OR-QSO-PARTY'
'PA-QSO-PARTY'
'PACC'
'PSK-DEATHMATCH'
'QC-QSO-PARTY'
'RAC (import-only)'
'RAC-CANADA-DAY'
'RAC-CANADA-WINTER'
'RDAC'
'RDXC'
'REF-160M'
'REF-CW'
'REF-SSB'
'REP-PORTUGAL-DAY-HF'
'RI-QSO-PARTY'
'RSGB-160'
'RSGB-21/28-CW'
'RSGB-21/28-SSB'
'RSGB-80M-CC'
'RSGB-AFS-CW'
'RSGB-AFS-SSB'
'RSGB-CLUB-CALLS'
'RSGB-COMMONWEALTH'
'RSGB-IOTA'
'RSGB-LOW-POWER'
'RSGB-NFD'
'RSGB-ROPOCO'
'RSGB-SSB-FD'
'RUSSIAN-RTTY'
'SAC-CW'
'SAC-SSB'
'SARTG-RTTY'
'SC-QSO-PARTY'
'SCC-RTTY'
'SD-QSO-PARTY'
'SMP-AUG'
'SMP-MAY'
'SP-DX-RTTY'
'SPAR-WINTER-FD'
'SPDXContest'
'SPRING SPRINT'
'SR-MARATHON'
'STEW-PERRY'
'SUMMER SPRINT'
'TARA-GRID-DIP'
'TARA-RTTY'
'TARA-RUMBLE'
'TARA-SKIRMISH'
'TEN-RTTY'
'TMC-RTTY'
'TN-QSO-PARTY'
'TX-QSO-PARTY'
'UBA-DX-CW'
'UBA-DX-SSB'
'UK-DX-BPSK63'
'UK-DX-RTTY'
'UKR-CHAMP-RTTY'
'UKRAINIAN DX'
'UKSMG-6M-MARATHON'
'UKSMG-SUMMER-ES'
'URE-DX  (import-only)'
'US-COUNTIES-QSO'
'UT-QSO-PARTY'
'VA-QSO-PARTY'
'VENEZ-IND-DAY'
'VIRGINIA QSO PARTY (import-only)'
'VOLTA-RTTY'
'WA-QSO-PARTY'
'WI-QSO-PARTY'
'WIA-HARRY ANGEL'
'WIA-JMMFD'
'WIA-OCDX'
'WIA-REMEMBRANCE'
'WIA-ROSS HULL'
'WIA-TRANS TASMAN'
'WIA-VHF/UHF FD'
'WIA-VK SHIRES'
'WINTER SPRINT'
'WV-QSO-PARTY'
'WY-QSO-PARTY'
'XE-INTL-RTTY'
'YOHFDX'
'YUDXC'
)
MaxLength = 40
ParentShowHint = False
ShowHint = True
TabOrder = 14
TabStop = False
end
object tmrESC2: TTimer
Enabled = False
OnTimer = tmrESC2Timer
left = 472
top = 24
left = 544
top = 8
end
end

View File

@ -20,13 +20,15 @@ type
chSpace: TCheckBox;
chLoc: TCheckBox;
chNRInc: TCheckBox;
cmbContestName: TComboBox;
edtCall: TEdit;
edtRSTs: TEdit;
edtSTX: TEdit;
edtSTX2: TEdit;
edtSTX_str: TEdit;
edtRSTr: TEdit;
edtSRX: TEdit;
edtSRX2: TEdit;
lblContestName: TLabel;
lblCall: TLabel;
lblRSTs: TLabel;
lblMSGs: TLabel;
@ -45,7 +47,7 @@ type
procedure edtCallKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
procedure edtCallKeyPress(Sender: TObject; var Key: char);
procedure edtSRXExit(Sender: TObject);
procedure edtSTX2Exit(Sender: TObject);
procedure edtSTX_strExit(Sender: TObject);
procedure edtSTXExit(Sender: TObject);
procedure edtSTXKeyPress(Sender: TObject; var Key: char);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
@ -63,6 +65,9 @@ type
{ public declarations }
end;
const
C_CONTEST_LIST_FILE_NAME = 'ContestName.tab';
var
frmContest: TfrmContest;
RSTstx: string = ''; //contest mode serial numbers store
@ -74,7 +79,7 @@ implementation
{$R *.lfm}
uses dData, dUtils, fNewQSO;
uses dData, dUtils, fNewQSO, fWorkedGrids, strutils;
procedure TfrmContest.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
var
@ -126,8 +131,9 @@ begin
else
if Assigned(frmNewQSO.CWint) then
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(
dmUtils.GetDescKeyFromCode(Key), frmNewQSO.edtCall.Text, frmNewQSO.edtHisRST.Text,
frmNewQSO.edtName.Text, frmNewQSO.lblGreeting.Caption, ''));
dmUtils.GetDescKeyFromCode(Key),frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
key := 0;
end;
@ -158,8 +164,31 @@ end;
procedure TfrmContest.edtCallExit(Sender: TObject);
begin
// if frmNewQSO is in viewmode or editmode it overwrites old data or will not save
// because saving is disabled in view mode. this if statement starts a fresh newqso form
if frmNewQSO.ViewQSO or frmNewQSO.EditQSO then
begin
frmNewQSO.Caption := dmUtils.GetNewQSOCaption('New QSO');
frmNewQSO.UnsetEditLabel;
frmNewQSO.BringToFront;
frmNewQSO.ClearAll;
edtCallExit(nil);
end;
frmNewQSO.edtCall.Text := edtCall.Text;
//dupe check
if frmWorkedGrids.WkdCall(edtCall.Text, dmUtils.GetBandFromFreq(frmNewQSO.cmbFreq.Text) ,frmNewQSO.cmbMode.Text) = 1 then
Begin //dupe
edtCall.Font.Color:=clRed;
edtCall.Font.Style:= [fsBold];
end
else
Begin //clear dupe if user press 1xESC and change call not to be dupe
edtCall.Font.Color:=clDefault;
edtCall.Font.Style:= [];
end;
//report in NEwQSO changes to 59 to late (after passing cmbMode)
//NOTE! if mode is not in list program dies! In that case skip next
if frmNewQSO.cmbMode.ItemIndex >=0 then
@ -172,7 +201,9 @@ begin
end;
end;
frmNewQSO.edtHisRST.Text := edtRSTs.Text + ' ' + edtSTX.Text + ' ' + edtSTX2.Text;
frmNewQSO.edtHisRST.Text := edtRSTs.Text;
frmNewQSO.edtContestSerialSent.Text := edtSTX.Text;
frmNewQSO.edtContestExchangeMessageSent.Text := edtSTX_str.Text;
//so that CW macros work
frmNewQSO.edtCallExit(nil);
frmContest.ShowOnTop;
@ -181,15 +212,16 @@ end;
procedure TfrmContest.btSaveClick(Sender: TObject);
begin
frmNewQSO.edtHisRST.Text := edtRSTs.Text + ' ' + edtSTX.Text + ' ' + edtSTX2.Text;
//this should be ok before
if chLoc.Checked then
begin
frmNewQSO.edtMyRST.Text := edtRSTr.Text + ' ' + edtSRX.Text;
frmNewQSO.edtGrid.Text := edtSRX2.Text;
end
else
frmNewQSO.edtMyRST.Text := edtRSTr.Text + ' ' + edtSRX.Text + ' ' + edtSRX2.Text;
frmNewQSO.edtHisRST.Text := edtRSTs.Text;
frmNewQSO.edtMyRST.Text := edtRSTr.Text;
frmNewQSO.edtContestSerialReceived.Text := edtSRX.Text;
frmNewQSO.edtContestSerialSent.Text := edtSTX.Text;
frmNewQSO.edtContestExchangeMessageReceived.Text := edtSRX2.Text;
frmNewQSO.edtContestExchangeMessageSent.Text := edtSTX_str.Text;
frmNewQSO.edtContestName.Text := ExtractWord(1,cmbContestName.Text,['|']);
frmNewQSO.btnSave.Click;
if dmData.DebugLevel >= 1 then
@ -292,7 +324,7 @@ begin
ChkSerialNrUpd(False); //just save it
end;
procedure TfrmContest.edtSTX2Exit(Sender: TObject);
procedure TfrmContest.edtSTX_strExit(Sender: TObject);
begin
ChkSerialNrUpd(False); //just save it
end;
@ -310,24 +342,44 @@ begin
end;
procedure TfrmContest.FormCreate(Sender: TObject);
var
ListOfContests : TStringList;
s: string;
Contestfile :TextFile;
begin
frmContest.KeyPreview := True;
// loading the contest list from ~/.config/cqrlog/ContestNames.tab
// Format of File CONTEST_ID|CONTEST_DESCRIPTION
// see ADIF 3.0.9 http://www.adif.org/309/ADIF_309.htm#Contest_ID
// File have to be UTF8 without BOM
ListOfContests:= TStringList.Create;
ListOfContests.Clear;
ListOfContests.Sorted:=True;
if FileExists(dmData.HomeDir + C_CONTEST_LIST_FILE_NAME) then
begin
ListOfContests.LoadFromFile(dmData.HomeDir + C_CONTEST_LIST_FILE_NAME);
cmbContestName.Clear;
cmbContestName.Items := ListOfContests;
cmbContestName.Items.Insert(0,'');
end;
ListOfContests.Free;
end;
procedure TfrmContest.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
dmUtils.SaveWindowPos(frmContest);
end;
procedure TfrmContest.FormHide(Sender: TObject);
begin
frmNewQSO.gbContest.Visible := false;
dmUtils.SaveWindowPos(frmContest);
frmContest.Hide;
end;
procedure TfrmContest.FormShow(Sender: TObject);
begin
frmNewQSO.gbContest.Visible := true;
dmUtils.LoadWindowPos(frmContest);
InitInput;
end;
@ -353,9 +405,11 @@ begin
if not ((edtSTX.Text <> '') and (RSTstx = '')) then
edtSTX.Text := RSTstx;
edtSTX2.Text := RSTstxAdd;
edtSTX_str.Text := RSTstxAdd;
edtSRX.Text := '';
edtSRX2.Text := '';
edtCall.Font.Color:=clDefault;
edtCall.Font.Style:= [];
edtCall.Clear;
EscFirstTime := True;
{
@ -364,16 +418,10 @@ begin
either (dbg msg:input finale):
NOTE: Window with stalled focus found!, faking focus-out event
NOTE: Window with stalled focus found!, faking focus-out event
NOTE: Window with stalled focus found!, faking focus-out event
(cqrlog:2643): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index >= 0 && index <= layout->length' failed
(cqrlog:2643): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index >= 0 && index <= layout->length' failed
(cqrlog:2643): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index >= 0 && index <= layout->length' failed
(cqrlog:2643): Pango-CRITICAL **: pango_layout_get_cursor_pos: assertion 'index >= 0 && index <= layout->length' failed
----
or(dbg msg: Clear all done next focus ):
NOTE: Window with stalled focus found!, faking focus-out event
NOTE: Window with stalled focus found!, faking focus-out event
----
@ -424,7 +472,7 @@ begin
end;
RSTstx := stx;
RSTstxAdd := edtSTX2.Text;
RSTstxAdd := edtSTX_str.Text;
if dmData.DebugLevel >= 1 then
Writeln(' Inc number is: ', IncNr);

View File

@ -16,10 +16,13 @@ type
btnOK : TButton;
btnCancel : TButton;
btnReSet: TButton;
CheckBox1: TCheckBox;
fraExportPref1 : TfraExportPref;
procedure btnOKClick(Sender : TObject);
procedure btnReSetClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender : TObject);
procedure fraExportPref1Click(Sender: TObject);
private
{ private declarations }
public
@ -43,6 +46,11 @@ begin
fraExportPref1.LoadExportPref
end;
procedure TfrmExportPref.fraExportPref1Click(Sender: TObject);
begin
end;
procedure TfrmExportPref.btnOKClick(Sender : TObject);
begin
fraExportPref1.SaveExportPref;
@ -58,5 +66,10 @@ begin
AllChk := not AllChk;
end;
procedure TfrmExportPref.FormCreate(Sender: TObject);
begin
end;
end.

View File

@ -25,7 +25,7 @@ type
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ, ExITU,ExNote,ExState,ExProfile,
ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate,ExQSLRDate,
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName: Boolean);
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName, exContest: Boolean);
procedure ExportADIF;
procedure ExportHTML;
@ -85,7 +85,7 @@ procedure TfrmExportProgress.FieldsForExport(var ExDate,ExTimeOn,ExTimeOff,ExCal
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ, ExITU,ExNote,ExState,ExProfile,
ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate,ExQSLRDate,
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime, exProp, exRxFreq, exSatName: Boolean);
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime, exProp, exRxFreq, exSatName, exContest: Boolean);
begin
exDate := cqrini.ReadBool('Export','Date',True);
exTimeOn := cqrini.ReadBool('Export','time_on',True);
@ -111,6 +111,7 @@ begin
exWAZ := cqrini.ReadBool('Export','WAZ',False);
exITU := cqrini.ReadBool('Export','ITU',False);
exNote := cqrini.ReadBool('Export','Note',False);
exContest := cqrini.ReadBool('Export','Contest',False);
ExProfile := cqrini.ReadBool('Export','Profile',False);
exState := cqrini.ReadBool('Export','State',False);
ExLQslS := cqrini.ReadBool('Export','LQSLS',False);
@ -149,14 +150,15 @@ var
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ, ExITU,ExNote,ExState, ExProfile : Boolean;
ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate,ExQSLRDate : Boolean;
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName : Boolean;
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName, exContest : Boolean;
Source : TDataSet;
FirstBackupPath : String;
procedure SaveData(qsodate,TimeOn,TimeOff,Call,Freq,Mode,RSTS,RSTR,sName,
QTH,QSLS,QSLR,QSLVIA,IOTA,Power,Itu,waz,loc,Myloc,County,
Award,Remarks,dxcc,state,band,profile,LQslS,LQslSDate,LQslR,LQslRDate,cont,
QSLSDate,QSLRDate,eQslS,eQslSDate,eQslR,eQslRDate,PropMode, Satellite, RxFreq : String);
QSLSDate,QSLRDate,eQslS,eQslSDate,eQslR,eQslRDate,PropMode, Satellite, RxFreq, stx,
srx, stx_string, srx_string, contestname : String);
begin
leng := 0;
@ -212,88 +214,52 @@ var
Writeln(f);
leng := 0
end;
if leng>200 then
begin
Writeln(f);
leng := 0
end;
if exRSTS then
begin
tmp := '<RST_SENT' + dmUtils.StringToADIF(ExtractWord(1,RSTS,[' ']));
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
if length(RSTS)>3 then // there is something else
Begin
tmp:=ExtractWord(2,RSTS,[' ']); //contest NR
if (tmp <>'') then
Begin
tmp := '<STX' + dmUtils.StringToADIF(tmp);
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
end;
tmp:=ExtractWord(3,RSTS,[' ']); //Contest MSG
if (tmp <>'') then
Begin
tmp := '<STX_STRING' + dmUtils.StringToADIF(tmp);
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
end;
end;
end;
if exRSTR then
begin
tmp := '<RST_RCVD' + dmUtils.StringToADIF(ExtractWord(1,RSTR,[' ']));
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
if length(RSTR)>3 then // there is something else
Begin
tmp:=ExtractWord(2,RSTR,[' ']); //contest NR
if (tmp <>'') then
Begin
tmp := '<SRX' + dmUtils.StringToADIF(tmp);
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
end;
tmp:=ExtractWord(3,RSTR,[' ']); //Contest MSG
if (tmp <>'') then
Begin
tmp := '<SRX_STRING' + dmUtils.StringToADIF(tmp);
Write(f,tmp);
leng := leng + Length(tmp);
if leng>200 then
begin
Writeln(f);
leng := 0
end;
end;
end;
end;
//DL7OAP Contest Fields
if exContest then
begin
if Length(stx) > 0 then
begin
tmp := '<STX' + dmUtils.StringToADIF(stx);
Write(f,tmp);
leng := leng + Length(tmp)
end;
if Length(srx) > 0 then
begin
tmp := '<SRX' + dmUtils.StringToADIF(srx);
Write(f,tmp);
leng := leng + Length(tmp)
end;
if Length(stx_string) > 0 then
begin
tmp := '<STX_STRING' + dmUtils.StringToADIF(stx_string);
Write(f,tmp);
leng := leng + Length(tmp)
end;
if Length(srx_string) > 0 then
begin
tmp := '<SRX_STRING' + dmUtils.StringToADIF(srx_string);
Write(f,tmp);
leng := leng + Length(tmp)
end;
if Length(contestname) > 0 then
begin
tmp := '<CONTEST_ID' + dmUtils.StringToADIF(contestname);
Write(f,tmp);
leng := leng + Length(tmp)
end;
end;
if exName then
begin
@ -614,7 +580,7 @@ begin
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ,ExITU,ExNote,ExState,ExProfile,
ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate,ExQSLRDate,
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,ExAscTime,exProp, exRxFreq, exSatName)
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,ExAscTime,exProp, exRxFreq, exSatName, exContest)
else begin
ExDate := True;ExTimeOn := True;ExTimeOff := True;ExCall := True;ExMode := True;
ExFreq := True;ExRSTS := True;ExRSTR := True;ExName := True;ExQTH := True;ExQSLS := True;ExQSLR := True;
@ -622,7 +588,7 @@ begin
ExCounty := True;ExDXCC := True;ExRemarks := True;ExWAZ := True;ExITU := True;ExNote := True;ExState := True;ExProfile := True;
ExLQslS := True;ExLQslSDate := True;ExLQslR := True;ExLQslRDate := True; ExCont := True;
ExeQslS := True;ExeQslSDate := True;ExeQslR := True;ExeQslRDate := True; exAscTime := False;
exProp := True; exRxFreq := True; exSatName := True;
exProp := True; exRxFreq := True; exSatName := True; exContest := True;
if not DirectoryExistsUTF8(dmData.HomeDir + 'tmp') then
CreateDirUTF8(dmData.HomeDir + 'tmp');
@ -732,7 +698,12 @@ begin
eqsl_qslrdate,
Source.FieldByName('prop_mode').AsString,
Source.FieldByName('satellite').AsString,
FloatToStr(Source.FieldByName('RxFreq').AsFloat)
FloatToStr(Source.FieldByName('RxFreq').AsFloat),
Source.FieldByName('stx').AsString,
Source.FieldByName('srx').AsString,
Source.FieldByName('stx_string').AsString,
Source.FieldByName('srx_string').AsString,
Source.FieldByName('contestname').AsString
);
pBarProg.StepIt;
if (i mod 100 = 0) then
@ -809,12 +780,13 @@ var
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ, ExITU,ExNote, exState, ExProfile : Boolean;
ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate, ExQSLRDate : Boolean;
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName : Boolean;
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime,exProp, exRxFreq, exSatName, exContest : Boolean;
procedure SaveData(qsodate,TimeOn,TimeOff,Call,Freq,Mode,RSTS,RSTR,sName,
QTH,QSLS,QSLR,QSLVIA,IOTA,Power,Itu,waz,loc,Myloc,County,
Award,Remarks,dxcc,state,band,profile,LQslS,LQslSDate,LQslR,LQslRDate,cont,
QSLSDate,QSLRDate,eQslS,eQslSDate,eQslR,eQslRDate,PropMode, Satellite, RxFreq : String);
QSLSDate,QSLRDate,eQslS,eQslSDate,eQslR,eQslRDate,PropMode, Satellite, RxFreq, stx,
srx, stx_string, srx_string, contestname : String);
begin
Writeln(f,'<tr>');
@ -1060,6 +1032,29 @@ var
Writeln(f, '<td>'+Satellite+'</td>')
end;
if exContest then
begin
if (contestname='') then
contestname:='&nbsp;';
Writeln(f, '<td>'+contestname+'</td>');
if (srx='') then
srx:='&nbsp;';
Writeln(f, '<td>'+srx+'</td>');
if (srx_string='') then
srx_string:='&nbsp;';
Writeln(f, '<td>'+srx_string+'</td>');
if (stx='') then
stx:='&nbsp;';
Writeln(f, '<td>'+stx+'</td>');
if (stx_string='') then
stx_string:='&nbsp;';
Writeln(f, '<td>'+stx_string+'</td>');
end;
Writeln(f,'</tr>')
end;
begin
@ -1070,7 +1065,7 @@ begin
ExQSLVIA,ExIOTA,ExAward,ExLoc,ExMyLoc,ExPower,
ExCounty,ExDXCC,ExRemarks,ExWAZ, ExITU,ExNote, ExState,
ExProfile,ExLQslS,ExLQslSDate,ExLQslR,ExLQslRDate,ExCont,ExQSLSDate,ExQSLRDate,
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime, exProp, exRxFreq, exSatName);
ExeQslS,ExeQslSDate,ExeQslR,ExeQslRDate,exAscTime, exProp, exRxFreq, exSatName, exContest);
AssignFile(f, FileName);
Rewrite(f);
@ -1263,6 +1258,20 @@ begin
Write(f,'<td width="'+cqrini.ReadString('Export','WSatName','50')+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">Satellite</div></td>');
if exContest then
begin
//DL7OAP new Contest fields
Write(f,'<td width=50'+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">Contestname</div></td>');
Write(f,'<td width=50'+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">SRX</div></td>');
Write(f,'<td width=50'+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">SRX_STRING</div></td>');
Write(f,'<td width=50'+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">STX</div></td>');
Write(f,'<td width=50'+
'" bgcolor="#333366" class="hlava"><div align="center" class="popis">STX_STRING</div></td>');
end;
Writeln(f,'</tr>');
@ -1357,7 +1366,12 @@ begin
eqsl_qslrdate,
Source.FieldByName('prop_mode').AsString,
Source.FieldByName('satellite').AsString,
FloatToStr(Source.FieldByName('RxFreq').AsFloat)
FloatToStr(Source.FieldByName('RxFreq').AsFloat),
Source.FieldByName('stx').AsString,
Source.FieldByName('srx').AsString,
Source.FieldByName('stx_string').AsString,
Source.FieldByName('srx_string').AsString,
Source.FieldByName('contestname').AsString
);
pBarProg.StepIt;
if (i mod 100 = 0) then

View File

@ -1,7 +1,7 @@
object frmFilter: TfrmFilter
Left = 272
Left = 161
Height = 658
Top = 79
Top = 20
Width = 817
HelpType = htKeyword
HelpKeyword = 'help/h23.html#ah22'
@ -121,7 +121,7 @@ object frmFilter: TfrmFilter
OnKeyUp = FormKeyUp
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '1.8.2.0'
LCLVersion = '2.0.0.4'
object lblProf: TLabel
AnchorSideTop.Control = cmbProfile
AnchorSideRight.Control = lblSortBy
@ -223,13 +223,15 @@ object frmFilter: TfrmFilter
end
end
object btnOK: TButton
AnchorSideLeft.Control = btnSave
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cmbSort
Left = 725
AnchorSideRight.Control = gbIota
AnchorSideRight.Side = asrBottom
Left = 731
Height = 26
Top = 500
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Left = 6
BorderSpacing.InnerBorder = 4
Caption = 'OK'
@ -240,7 +242,7 @@ object frmFilter: TfrmFilter
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnOK
AnchorSideTop.Side = asrBottom
Left = 725
Left = 731
Height = 26
Top = 532
Width = 75
@ -357,12 +359,12 @@ object frmFilter: TfrmFilter
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gbCallsign
Left = 492
Height = 114
Height = 56
Top = 4
Width = 154
BorderSpacing.Left = 6
Caption = ' Mode '
ClientHeight = 96
ClientHeight = 38
ClientWidth = 152
TabOrder = 5
object cmbMode: TComboBox
@ -370,11 +372,10 @@ object frmFilter: TfrmFilter
AnchorSideTop.Control = gbMode
Left = 6
Height = 32
Top = 6
Top = 0
Width = 130
AutoSize = False
BorderSpacing.Left = 6
BorderSpacing.Top = 6
ItemHeight = 0
TabOrder = 0
end
@ -834,16 +835,16 @@ object frmFilter: TfrmFilter
end
end
object gbContinent: TGroupBox
AnchorSideLeft.Control = gbZones
AnchorSideLeft.Control = gbContestEx
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gbLoc
Left = 492
Height = 114
Left = 652
Height = 56
Top = 128
Width = 154
BorderSpacing.Left = 6
Caption = ' Continent '
ClientHeight = 96
ClientHeight = 38
ClientWidth = 152
TabOrder = 10
object edtCont: TEdit
@ -851,10 +852,9 @@ object frmFilter: TfrmFilter
AnchorSideTop.Control = gbContinent
Left = 6
Height = 34
Top = 6
Top = 0
Width = 95
BorderSpacing.Left = 6
BorderSpacing.Top = 6
TabOrder = 0
end
end
@ -1216,7 +1216,7 @@ object frmFilter: TfrmFilter
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnCancel
AnchorSideTop.Side = asrBottom
Left = 725
Left = 731
Height = 26
Top = 564
Width = 75
@ -1258,14 +1258,14 @@ object frmFilter: TfrmFilter
TabOrder = 20
end
object btnSave: TButton
AnchorSideLeft.Control = cmbSort
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cmbSort
Left = 631
AnchorSideLeft.Control = btClear
AnchorSideTop.Control = btClear
AnchorSideTop.Side = asrBottom
Left = 650
Height = 26
Top = 500
Width = 88
BorderSpacing.Left = 155
Top = 531
Width = 75
BorderSpacing.Top = 6
BorderSpacing.InnerBorder = 4
Caption = 'Save filter'
OnClick = btnSaveClick
@ -1275,10 +1275,10 @@ object frmFilter: TfrmFilter
AnchorSideLeft.Control = btnSave
AnchorSideTop.Control = btnSave
AnchorSideTop.Side = asrBottom
Left = 631
Left = 650
Height = 26
Top = 532
Width = 88
Top = 563
Width = 75
BorderSpacing.Top = 6
BorderSpacing.InnerBorder = 4
Caption = 'Load filter'
@ -1286,35 +1286,36 @@ object frmFilter: TfrmFilter
TabOrder = 22
end
object gbState: TGroupBox
AnchorSideLeft.Control = gbContinent
AnchorSideLeft.Control = gbContestEx
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gbLoc
AnchorSideTop.Control = gbContinent
AnchorSideTop.Side = asrBottom
Left = 652
Height = 114
Top = 128
Height = 56
Top = 184
Width = 154
BorderSpacing.Left = 6
Caption = ' State '
ClientHeight = 96
ClientHeight = 38
ClientWidth = 152
TabOrder = 23
object edtState: TEdit
AnchorSideLeft.Control = gbState
AnchorSideTop.Control = gbState
AnchorSideRight.Side = asrBottom
Left = 6
Height = 34
Top = 6
Top = 0
Width = 95
BorderSpacing.Left = 6
BorderSpacing.Top = 6
CharCase = ecUppercase
TabOrder = 0
end
end
object cmbSort: TComboBox
AnchorSideLeft.Control = GroupBox17
AnchorSideLeft.Control = gbPower
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GroupBox17
AnchorSideTop.Control = gbPower
Left = 276
Height = 34
Top = 500
@ -1344,7 +1345,7 @@ object frmFilter: TfrmFilter
TabOrder = 24
Text = 'DXCC'
end
object GroupBox17: TGroupBox
object gbPower: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = gbAward
AnchorSideTop.Side = asrBottom
@ -1380,8 +1381,8 @@ object frmFilter: TfrmFilter
TabOrder = 0
end
object edtPwrFrom: TEdit
AnchorSideTop.Control = GroupBox17
AnchorSideRight.Control = GroupBox17
AnchorSideTop.Control = gbPower
AnchorSideRight.Control = gbPower
AnchorSideRight.Side = asrBottom
Left = 61
Height = 34
@ -1431,7 +1432,6 @@ object frmFilter: TfrmFilter
ItemHeight = 0
OnChange = cmbBandSelectorChange
TabOrder = 0
Text = 'cmbBandSelector'
end
object Label20: TLabel
AnchorSideLeft.Control = cmbBandSelector
@ -1447,29 +1447,452 @@ object frmFilter: TfrmFilter
end
end
object chkNot: TCheckBox
AnchorSideTop.Control = btnLoad
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = btnLoad
AnchorSideLeft.Control = cmbSort
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cmbSort
AnchorSideRight.Side = asrBottom
Left = 665
Left = 479
Height = 23
Top = 564
Width = 54
Anchors = [akTop, akRight]
BorderSpacing.Top = 6
Caption = 'NOT'
Top = 500
Width = 154
BorderSpacing.Left = 3
Caption = 'Reverse filter (NOT)'
TabOrder = 27
end
object gbContestEx: TGroupBox
AnchorSideLeft.Control = gbZones
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gbZones
Left = 492
Height = 114
Top = 128
Width = 154
BorderSpacing.Left = 6
Caption = 'Contest Exchange'
ClientHeight = 96
ClientWidth = 152
TabOrder = 28
object edtSTX: TEdit
AnchorSideLeft.Control = gbContestEx
AnchorSideTop.Control = gbContestEx
Left = 6
Height = 34
Hint = 'search for contest send serial number'
Top = 6
Width = 60
BorderSpacing.Left = 6
BorderSpacing.Top = 6
ParentShowHint = False
ShowHint = True
TabOrder = 0
end
object edtSRX: TEdit
AnchorSideLeft.Control = gbContestEx
AnchorSideTop.Control = edtSTX
AnchorSideTop.Side = asrBottom
Left = 6
Height = 34
Hint = 'search for contest received serial number'
Top = 41
Width = 60
BorderSpacing.Left = 6
BorderSpacing.Top = 1
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object edtSTXstr: TEdit
AnchorSideTop.Control = edtSTX
AnchorSideRight.Control = gbContestEx
AnchorSideRight.Side = asrBottom
Left = 86
Height = 34
Hint = 'search for contest send message exchange'
Top = 6
Width = 60
Anchors = [akTop, akRight]
BorderSpacing.Right = 6
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object edtSRXstr: TEdit
AnchorSideTop.Control = edtSTXstr
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = edtSTXstr
AnchorSideRight.Side = asrBottom
Left = 86
Height = 34
Hint = 'search for contest received message exchange'
Top = 41
Width = 60
Anchors = [akTop, akRight]
BorderSpacing.Top = 1
ParentShowHint = False
ShowHint = True
TabOrder = 3
end
object lblContExS: TLabel
AnchorSideLeft.Control = gbContestEx
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = edtSTX
AnchorSideTop.Side = asrCenter
Left = 72
Height = 17
Top = 15
Width = 8
Alignment = taCenter
Caption = 'S'
ParentColor = False
end
object lblContxR: TLabel
AnchorSideLeft.Control = gbContestEx
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = edtSRX
AnchorSideTop.Side = asrCenter
Left = 72
Height = 17
Top = 50
Width = 9
Alignment = taCenter
Caption = 'R'
ParentColor = False
end
object lblContNR: TLabel
AnchorSideLeft.Control = edtSRX
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = edtSRX
AnchorSideTop.Side = asrBottom
Left = 29
Height = 17
Top = 75
Width = 15
Alignment = taCenter
Caption = 'Nr'
ParentColor = False
end
object lblContMsg: TLabel
AnchorSideLeft.Control = edtSRXstr
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = edtSRXstr
AnchorSideTop.Side = asrBottom
Left = 103
Height = 17
Top = 75
Width = 27
Alignment = taCenter
Caption = 'Msg'
ParentColor = False
end
end
object gbContName: TGroupBox
AnchorSideLeft.Control = gbFreq
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = gbMode
AnchorSideTop.Side = asrBottom
Left = 492
Height = 56
Top = 60
Width = 154
BorderSpacing.Left = 6
Caption = 'Contest name'
ClientHeight = 38
ClientWidth = 152
TabOrder = 29
object cmbContestName: TComboBox
AnchorSideLeft.Control = gbContName
AnchorSideTop.Control = gbContName
Left = 6
Height = 34
Hint = 'contestname, choose ADIF contest_id via combobox or type freestyle max 40 characters'
Top = 0
Width = 90
AutoComplete = True
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
BorderSpacing.Left = 6
ItemHeight = 0
Items.Strings = (
'070-160M-SPRINT'
'070-3-DAY'
'070-31-FLAVORS'
'070-40M-SPRINT'
'070-80M-SPRINT'
'070-PSKFEST'
'070-ST-PATS-DAY'
'070-VALENTINE-SPRINT'
'10-RTTY'
'1010-OPEN-SEASON'
'7QP'
'AL-QSO-PARTY'
'ALL-ASIAN-DX-CW'
'ALL-ASIAN-DX-PHONE'
'ANARTS-RTTY'
'ANATOLIAN-RTTY'
'AP-SPRINT'
'AR-QSO-PARTY'
'ARI-DX'
'ARRL-10'
'ARRL-160'
'ARRL-222'
'ARRL-DX-CW'
'ARRL-DX-SSB'
'ARRL-EME'
'ARRL-FIELD-DAY'
'ARRL-RR-CW'
'ARRL-RR-RTTY'
'ARRL-RR-SSB'
'ARRL-RTTY'
'ARRL-SCR'
'ARRL-SS-CW'
'ARRL-SS-SSB'
'ARRL-UHF-AUG'
'ARRL-VHF-JAN'
'ARRL-VHF-JUN'
'ARRL-VHF-SEP'
'AZ-QSO-PARTY'
'BARTG-RTTY'
'BARTG-SPRINT'
'BC-QSO-PARTY'
'CA-QSO-PARTY'
'CIS-DX'
'CO-QSO-PARTY'
'CQ-160-CW'
'CQ-160-SSB'
'CQ-M'
'CQ-VHF'
'CQ-WPX-CW'
'CQ-WPX-RTTY'
'CQ-WPX-SSB'
'CQ-WW-CW'
'CQ-WW-RTTY'
'CQ-WW-SSB'
'CT-QSO-PARTY'
'CVA-DX-CW'
'CVA-DX-SSB'
'CWOPS-CW-OPEN'
'CWOPS-CWT'
'DARC-WAEDC-CW'
'DARC-WAEDC-RTTY'
'DARC-WAEDC-SSB'
'DARC-WAG'
'DE-QSO-PARTY'
'DL-DX-RTTY'
'DMC-RTTY'
'EA-CNCW'
'EA-DME'
'EA-PSK63'
'EA-RTTY (import-only)'
'EA-SMRE-CW'
'EA-SMRE-SSB'
'EA-VHF-ATLANTIC'
'EA-VHF-COM'
'EA-VHF-COSTA-SOL'
'EA-VHF-EA'
'EA-VHF-EA1RCS'
'EA-VHF-QSL'
'EA-VHF-SADURNI'
'EA-WW-RTTY'
'EPC-PSK63'
'EU Sprint'
'EU-HF'
'EU-PSK-DX'
'EUCW160M'
'FALL SPRINT'
'FL-QSO-PARTY'
'GA-QSO-PARTY'
'HA-DX'
'HELVETIA'
'HI-QSO-PARTY'
'HOLYLAND'
'IA-QSO-PARTY'
'IARU-FIELD-DAY'
'IARU-HF'
'ID-QSO-PARTY'
'IL QSO Party'
'IN-QSO-PARTY'
'JARTS-WW-RTTY'
'JIDX-CW'
'JIDX-SSB'
'JT-DX-RTTY'
'KS-QSO-PARTY'
'KY-QSO-PARTY'
'LA-QSO-PARTY'
'LDC-RTTY'
'LZ DX'
'MAR-QSO-PARTY'
'MD-QSO-PARTY'
'ME-QSO-PARTY'
'MI-QSO-PARTY'
'MIDATLANTIC-QSO-PARTY'
'MN-QSO-PARTY'
'MO-QSO-PARTY'
'MS-QSO-PARTY'
'MT-QSO-PARTY'
'NA-SPRINT-CW'
'NA-SPRINT-RTTY'
'NA-SPRINT-SSB'
'NAQP-CW'
'NAQP-RTTY'
'NAQP-SSB'
'NC-QSO-PARTY'
'ND-QSO-PARTY'
'NE-QSO-PARTY'
'NEQP'
'NH-QSO-PARTY'
'NJ-QSO-PARTY'
'NM-QSO-PARTY'
'NRAU-BALTIC-CW'
'NRAU-BALTIC-SSB'
'NV-QSO-PARTY'
'NY-QSO-PARTY'
'OCEANIA-DX-CW'
'OCEANIA-DX-SSB'
'OH-QSO-PARTY'
'OK-DX-RTTY'
'OK-OM-DX'
'OK-QSO-PARTY'
'OMISS-QSO-PARTY'
'ON-QSO-PARTY'
'OR-QSO-PARTY'
'PA-QSO-PARTY'
'PACC'
'PSK-DEATHMATCH'
'QC-QSO-PARTY'
'RAC (import-only)'
'RAC-CANADA-DAY'
'RAC-CANADA-WINTER'
'RDAC'
'RDXC'
'REF-160M'
'REF-CW'
'REF-SSB'
'REP-PORTUGAL-DAY-HF'
'RI-QSO-PARTY'
'RSGB-160'
'RSGB-21/28-CW'
'RSGB-21/28-SSB'
'RSGB-80M-CC'
'RSGB-AFS-CW'
'RSGB-AFS-SSB'
'RSGB-CLUB-CALLS'
'RSGB-COMMONWEALTH'
'RSGB-IOTA'
'RSGB-LOW-POWER'
'RSGB-NFD'
'RSGB-ROPOCO'
'RSGB-SSB-FD'
'RUSSIAN-RTTY'
'SAC-CW'
'SAC-SSB'
'SARTG-RTTY'
'SC-QSO-PARTY'
'SCC-RTTY'
'SD-QSO-PARTY'
'SMP-AUG'
'SMP-MAY'
'SP-DX-RTTY'
'SPAR-WINTER-FD'
'SPDXContest'
'SPRING SPRINT'
'SR-MARATHON'
'STEW-PERRY'
'SUMMER SPRINT'
'TARA-GRID-DIP'
'TARA-RTTY'
'TARA-RUMBLE'
'TARA-SKIRMISH'
'TEN-RTTY'
'TMC-RTTY'
'TN-QSO-PARTY'
'TX-QSO-PARTY'
'UBA-DX-CW'
'UBA-DX-SSB'
'UK-DX-BPSK63'
'UK-DX-RTTY'
'UKR-CHAMP-RTTY'
'UKRAINIAN DX'
'UKSMG-6M-MARATHON'
'UKSMG-SUMMER-ES'
'URE-DX  (import-only)'
'US-COUNTIES-QSO'
'UT-QSO-PARTY'
'VA-QSO-PARTY'
'VENEZ-IND-DAY'
'VIRGINIA QSO PARTY (import-only)'
'VOLTA-RTTY'
'WA-QSO-PARTY'
'WI-QSO-PARTY'
'WIA-HARRY ANGEL'
'WIA-JMMFD'
'WIA-OCDX'
'WIA-REMEMBRANCE'
'WIA-ROSS HULL'
'WIA-TRANS TASMAN'
'WIA-VHF/UHF FD'
'WIA-VK SHIRES'
'WINTER SPRINT'
'WV-QSO-PARTY'
'WY-QSO-PARTY'
'XE-INTL-RTTY'
'YOHFDX'
'YUDXC'
)
MaxLength = 40
ParentShowHint = False
ShowHint = True
TabOrder = 0
TabStop = False
end
object cbIncConName: TCheckBox
AnchorSideLeft.Control = cmbContestName
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cmbContestName
AnchorSideTop.Side = asrCenter
Left = 97
Height = 23
Top = 6
Width = 45
BorderSpacing.Left = 1
Caption = 'inc'
TabOrder = 1
end
end
object btClear: TButton
AnchorSideTop.Control = btnOK
AnchorSideRight.Control = btnOK
Left = 650
Height = 25
Top = 500
Width = 75
Anchors = [akTop, akRight]
BorderSpacing.Right = 3
Caption = 'Clear filter'
OnClick = btClearClick
TabOrder = 30
end
object chkRemember: TCheckBox
AnchorSideLeft.Control = cmbGroupBy
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = cmbGroupBy
Left = 479
Height = 23
Top = 540
Width = 131
BorderSpacing.Left = 3
Caption = 'Remember filter'
OnChange = chkRememberChange
TabOrder = 31
end
object dlgOpen: TOpenDialog
Filter = 'filter *.fil|*.fil'
left = 501
top = 488
left = 32
top = 616
end
object dlgSave: TSaveDialog
DefaultExt = '.fil'
Filter = 'filter *.fil|*.fil'
Options = [ofOverwritePrompt, ofNoTestFileCreate, ofEnableSizing, ofViewDetail]
left = 557
top = 488
left = 80
top = 616
end
end

View File

@ -17,7 +17,7 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, MaskEdit, lcltype, ExtDlgs, EditBtn, inifiles;
Buttons, MaskEdit, lcltype, ExtDlgs, EditBtn, inifiles, strutils;
type
@ -30,8 +30,12 @@ type
btnLoad: TButton;
btnSelectDXCC: TButton;
btnHelp: TButton;
btClear: TButton;
cbIncConName: TCheckBox;
chkRemember: TCheckBox;
chkNot: TCheckBox;
chkIOTAOnly: TCheckBox;
cmbContestName: TComboBox;
cmbLoTW_qslr: TComboBox;
cmbeQSL_qslr : TComboBox;
cmbeQSL_qsls : TComboBox;
@ -44,6 +48,10 @@ type
cmbLoTW_qsls: TComboBox;
cmbSort: TComboBox;
cmbBandSelector: TComboBox;
edtSTX: TEdit;
edtSRX: TEdit;
edtSTXstr: TEdit;
edtSRXstr: TEdit;
edtDateFrom: TDateEdit;
edtCont: TEdit;
edtDateTo: TDateEdit;
@ -72,7 +80,9 @@ type
gbZones: TGroupBox;
gbCounty: TGroupBox;
gbState: TGroupBox;
GroupBox17 : TGroupBox;
gbContestEx: TGroupBox;
gbContName: TGroupBox;
gbPower : TGroupBox;
gbBand: TGroupBox;
gbDxcc: TGroupBox;
gbFreq: TGroupBox;
@ -83,6 +93,10 @@ type
gbQsl: TGroupBox;
gbContinent: TGroupBox;
Label1: TLabel;
lblContExS: TLabel;
lblContNR: TLabel;
lblContMsg: TLabel;
lblContxR: TLabel;
lblProf: TLabel;
lblMember: TLabel;
lblGrpBy: TLabel;
@ -122,10 +136,12 @@ type
rbIncludeIOTA: TRadioButton;
rbIncludeDiplom: TRadioButton;
dlgSave: TSaveDialog;
procedure btClearClick(Sender: TObject);
procedure btnHelpClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure btnSaveClick(Sender: TObject);
procedure btnSelectDXCCClick(Sender: TObject);
procedure chkRememberChange(Sender: TObject);
procedure cmbBandSelectorChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
@ -135,10 +151,14 @@ type
procedure edtDateFromExit(Sender: TObject);
procedure edtDateToExit(Sender: TObject);
private
procedure saveFilter(filename:String);
procedure loadFilter(filename:string);
public
tmp : String;
end;
const
C_CONTEST_LIST_FILE_NAME = 'ContestName.tab';
C_FILTER_LAST_SETTINGS_FILE_NAME = 'FilterSettings.fil';
var
frmFilter: TfrmFilter;
@ -146,7 +166,7 @@ implementation
{$R *.lfm}
{ TfrmFilter }
uses dData, dUtils,fSelectDXCC, dMembership;
uses dData, dUtils,fSelectDXCC, dMembership, uMyini;
procedure TfrmFilter.btnOKClick(Sender: TObject);
var
@ -155,6 +175,8 @@ var
p : TExplodeArray;
i : Integer = 0;
begin
if chkRemember.Checked then saveFilter(dmData.HomeDir + C_FILTER_LAST_SETTINGS_FILE_NAME);
tmp := '';
if (edtCallSign.Text <> '') then
begin
@ -180,6 +202,34 @@ begin
tmp := tmp + ' (mode = ' + QuotedStr(cmbMode.Text)+')';
tmp := tmp + ' AND'
end;
if ( cmbContestName.Text <> '') then
begin
if cbIncConName.Checked then
tmp := tmp + ' (UPPER(contestname) LIKE ''%' + upcase(cmbContestName.Text) + '%'')'
else
tmp := tmp + ' (UPPER(contestname) = ' + QuotedStr(upcase(cmbContestName.Text))+')';
tmp := tmp + ' AND'
end;
if (edtSTX.Text <> '') then
begin
tmp := tmp + ' (stx = ' + QuotedStr(edtSTX.Text)+')';
tmp := tmp + ' AND'
end;
if (edtSRX.Text <> '') then
begin
tmp := tmp + ' (srx = ' + QuotedStr(edtSRX.Text)+')';
tmp := tmp + ' AND'
end;
if (edtSTXstr.Text <> '') then
begin
tmp := tmp + ' (UPPER(stx_string) = ' + QuotedStr(upcase(edtSTXstr.Text))+')';
tmp := tmp + ' AND'
end;
if (edtSRXstr.Text <> '') then
begin
tmp := tmp + ' (UPPER(srx_string) = ' + QuotedStr(upcase(edtSRXstr.Text))+')';
tmp := tmp + ' AND'
end;
if (edtDateFrom.Text <> '') then
begin
tmp := tmp + ' (qsodate >= ' + QuotedStr(edtDateFrom.Text) + ') AND (qsodate <= ' +
@ -407,7 +457,7 @@ begin
dmData.qCQRLOG.Open;
dmData.qCQRLOG.Last
end;
ModalResult := mrOK
ModalResult := mrOK;
end;
procedure TfrmFilter.edtDateFromExit(Sender: TObject);
@ -433,6 +483,53 @@ begin
Close
end;
procedure TfrmFilter.FormCreate(Sender: TObject);
var
ListOfContests : TStringList;
i : integer;
s: string;
Contestfile :TextFile;
begin
dmUtils.InsertBands(cmbBandSelector);
cmbBandSelector.Items.Insert(0, ''); //to be sure
// loading the contest list from ../ContestNames.tab
// Format of File CONTEST_ID|CONTEST_DESCRIPTION
// see ADIF 3.0.9 http://www.adif.org/309/ADIF_309.htm#Contest_ID
ListOfContests:= TStringList.Create;
ListOfContests.Clear;
ListOfContests.Sorted:=false;
if FileExists(dmData.HomeDir + C_CONTEST_LIST_FILE_NAME) then
Begin
AssignFile(Contestfile, dmData.HomeDir + C_CONTEST_LIST_FILE_NAME);
try
reset(Contestfile);
while not eof(Contestfile) do
begin
readln(Contestfile, s);
ListOfContests.Add(ExtractDelimited(1,s,['|']));
end;
CloseFile(Contestfile);
except
on E: EInOutError do
writeln('Contestfile reading error. Details: ', E.Message);
end;
end;
//Add strings that wsjt-x may use at contest_name column
ListOfContests.Add('NA VHF');
ListOfContests.Add('EU VHF');
ListOfContests.Add('FIELD DAY');
ListOfContests.Add('RTTY RU');
ListOfContests.Add('FOX-QSO');
ListOfContests.Add('HOUND-QSO');
ListOfContests.Sort;
cmbContestName.Clear;
cmbContestName.Items := ListOfContests;
cmbContestName.Items.Insert(0,''); //to be sure there is empty line at start
ListOfContests.Free;
end;
//actually form create and show are common procedure as filter is opened in showModal and it always
//creates and shows itself in every opening
procedure TfrmFilter.FormShow(Sender: TObject);
var
Mask, sDate : String;
@ -446,6 +543,7 @@ begin
dmUtils.InsertQSL_R(cmbQSL_R);
cmbQSL_R.Items.Add('Empty');
dmUtils.InsertModes(cmbMode);
cmbMode.Items.Insert(0,'');
dmUtils.DateInRightFormat(now,Mask,sDate);
edtDateTo.Text := sDate;
dmData.InsertProfiles(cmbProfile,True);
@ -464,7 +562,10 @@ begin
if dmMembership.Club5.Name <> '' then
cmbMembers.Items.Add('5;'+dmMembership.Club5.Name+';'+dmMembership.Club5.LongName);
cmbMembers.ItemIndex := 0;
cmbSort.ItemIndex := 0
cmbSort.ItemIndex := 0;
chkRemember.Checked:= cqrini.ReadBool('frmFilter','Remember',false);
if chkRemember.Checked then loadFilter(dmData.HomeDir + C_FILTER_LAST_SETTINGS_FILE_NAME);
end;
procedure TfrmFilter.btnSelectDXCCClick(Sender: TObject);
@ -481,6 +582,16 @@ begin
end
end;
procedure TfrmFilter.chkRememberChange(Sender: TObject);
begin
cqrini.WriteBool('frmFilter','Remember',chkRemember.Checked);
if not chkRemember.Checked then
Begin
if FileExists(dmData.HomeDir + C_FILTER_LAST_SETTINGS_FILE_NAME) then
DeleteFile( dmData.HomeDir + C_FILTER_LAST_SETTINGS_FILE_NAME);
end;
end;
procedure TfrmFilter.cmbBandSelectorChange(Sender: TObject);
var
Band :String;
@ -513,12 +624,6 @@ begin
end;
procedure TfrmFilter.FormCreate(Sender: TObject);
begin
dmUtils.InsertBands(cmbBandSelector);
cmbBandSelector.Items.Insert(0, ''); //to be sure
end;
procedure TfrmFilter.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
@ -534,14 +639,135 @@ begin
ShowHelp
end;
procedure TfrmFilter.btClearClick(Sender: TObject);
var
i: integer;
begin
FormShow(nil);
edtCallSign.Text := '';
edtDXCC.Text := '';
edtFreqFrom.Text := '';
edtFreqTo.Text := '';
cmbMode.Text := '';
edtDateFrom.Text := '';
edtDateTo.Text := dmUtils.MyDateToStr(now);
edtLocator.Text := '';
edtQTH.Text := '';
cmbQSL_S.Text := '';
cmbQSL_R.Text := '';
edtQSLVia.Text := '';
edtIOTA.Text := '';
edtRemarks.Text := '';
edtDiplom.Text := '';
edtMyLoc.Text := '';
edtWAZ.Text := '';
edtITU.Text := '';
edtCounty.Text := '';
edtState.Text := '';
cmbLoTW_qsls.Text := '';
cmbLoTW_qslr.Text := '';
edtCont.Text := '';
cmbeQSL_qsls.Text := '';
cmbeQSL_qslr.Text := '';
edtPwrFrom.Text := '';
edtPwrTo.Text := '';
edtSTX.Text := '';
edtSRX.Text := '';
edtSTXstr.Text := '';
edtSRXstr.Text := '';
rbExactlyIOTA.Checked := True;
rbExactlyRem.Checked := True;
rbExactlyDiplom.Checked := True;
rbExactlyMyLoc.Checked := True;
rbExactlyCounty.Checked := True;
rbExactlyLoc.Checked := True;
rbExactlyCall.Checked := True;
rbExactlyQth.Checked := True;
chkIOTAOnly.Checked := False;
cbIncConName.Checked := False;
chkNot.Checked := False;
cmbContestName.ItemIndex := 0;
cmbGroupBy.ItemIndex := 0;
cmbProfile.ItemIndex := 0;
cmbMembers.ItemIndex := 0;
cmbBandSelector.ItemIndex:= 0;
end;
procedure TfrmFilter.btnLoadClick(Sender: TObject);
begin
dlgOpen.InitialDir := dmData.HomeDir;
if dlgOpen.Execute then loadFilter(dlgOpen.FileName);
end;
procedure TfrmFilter.btnSaveClick(Sender: TObject);
begin
dlgSave.InitialDir := dmData.HomeDir;
if dlgSave.Execute then saveFilter(dlgSave.FileName);
end;
procedure TfrmFilter.saveFilter(filename:String);
var
filini : TIniFile;
begin
dlgOpen.InitialDir := dmData.HomeDir;
if dlgOpen.Execute then
filini := TIniFile.Create(fileName);
try
filini.WriteString('call','call',edtCallSign.Text);
filini.WriteBool('call','exactly',rbExactlyCall.Checked);
filini.WriteString('dxcc','dxcc',edtDXCC.Text);
filini.WriteString('freq','freq_from',edtFreqFrom.Text);
filini.WriteString('freq','freq_to',edtFreqTo.Text);
filini.WriteString('mode','mode',cmbMode.Text);
filini.WriteString('date','date_from',edtDateFrom.Text);
filini.WriteString('date','date_to',edtDateTo.Text);
filini.WriteString('locator','locator',edtLocator.Text);
filini.WriteBool('locator','exactly',rbExactlyLoc.Checked);
filini.WriteString('qth','qth',edtQTH.Text);
filini.WriteBool('qth','exactly',rbExactlyQth.Checked);
filini.WriteString('qsl','qsl_s',cmbQSL_S.Text);
filini.WriteString('qsl','qsl_r',cmbQSL_R.Text);
filini.WriteString('qsl','qsl_via',edtQSLVia.Text);
filini.WriteString('sort','sort',cmbSort.Text);
filini.WriteString('iota','iota',edtIOTA.Text);
filini.WriteBool('iota','exactly',rbExactlyIOTA.Checked);
filini.WriteBool('iota','iota_only',chkIOTAOnly.Checked);
filini.WriteString('remarks','remarks',edtRemarks.Text);
filini.WriteBool('remarks','exactly',rbExactlyRem.Checked);
filini.WriteString('award','award',edtDiplom.Text);
filini.Writebool('award','exactly',rbExactlyDiplom.Checked);
filini.WriteString('myloc','myloc',edtMyLoc.Text);
filini.WriteBool('myloc','exactly',rbExactlyMyLoc.Checked);
filini.WriteString('waz','waz',edtWAZ.Text);
filini.WriteString('itu','itu',edtITU.Text);
filini.WriteString('county','county',edtCounty.Text);
filini.WriteBool('county','exactly',rbExactlyCounty.Checked);
filini.WriteString('state','state',edtState.Text);
filini.WriteInteger('groupby','groupby',cmbGroupBy.ItemIndex);
filini.WriteInteger('profile','profile',cmbProfile.ItemIndex);
filini.WriteInteger('membership','membership',cmbMembers.ItemIndex);
filini.WriteString('lotw_qsls','lotw_qsls',cmbLoTW_qsls.Text);
filini.WriteString('lotw_qsls','lotw_qslr',cmbLoTW_qslr.Text);
filini.WriteString('cont','cont',edtCont.Text);
filini.WriteString('eQSL','eqsl_qsl_sent',cmbeQSL_qsls.Text);
filini.WriteString('eQSL','eqsl_qsl_rcvd',cmbeQSL_qslr.Text) ;
filini.WriteString('Power','power_from',edtPwrFrom.Text);
filini.WriteString('Power','power_to',edtPwrTo.Text);
filini.WriteBool('not','not',chkNot.Checked);
filini.WriteInteger('contestname','contestname',cmbContestName.ItemIndex);
filini.Writebool('contestname','include',cbIncConName.Checked);
filini.WriteString('contestexchange','stx', edtSTX.Text);
filini.WriteString('contestexchange','srx', edtSRX.Text);
filini.WriteString('contestexchange','stxstr', edtSTXstr.Text);
filini.WriteString('contestexchange','srxstr', edtSRXstr.Text);
finally
filini.Free
end;
end;
Procedure TfrmFilter.loadFilter(filename:string);
var
filini : TIniFile;
begin
filini := TIniFile.Create(dlgOpen.FileName);
filini := TIniFile.Create(fileName);
try
edtCallSign.Text := filini.ReadString('call','call','');
rbIncludeCall.Checked := not filini.ReadBool('call','exactly',True);
@ -587,66 +813,16 @@ begin
edtPwrFrom.Text := filini.ReadString('Power','power_from','');
edtPwrTo.Text := filini.ReadString('Power','power_to','');
chkNot.Checked := filini.ReadBool('not','not',False);
if filini.ReadInteger('contestname','contestname',0) < cmbContestName.Items.Count then
cmbContestName.ItemIndex := filini.ReadInteger('contestname','contestname',0);
cbIncConName.Checked := filini.Readbool('contestname','include',False);
edtSTX.Text := filini.ReadString('contestexchange','stx', '');
edtSRX.Text := filini.ReadString('contestexchange','srx','');
edtSTXstr.Text := filini.ReadString('contestexchange','stxstr','');
edtSRXstr.Text := filini.ReadString('contestexchange','srxstr','');
finally
filini.Free
end
end
end;
procedure TfrmFilter.btnSaveClick(Sender: TObject);
var
filini : TIniFile;
begin
dlgSave.InitialDir := dmData.HomeDir;
if dlgSave.Execute then
begin
filini := TIniFile.Create(dlgSave.FileName);
try
filini.WriteString('call','call',edtCallSign.Text);
filini.WriteBool('call','exactly',rbExactlyCall.Checked);
filini.WriteString('dxcc','dxcc',edtDXCC.Text);
filini.WriteString('freq','freq_from',edtFreqFrom.Text);
filini.WriteString('freq','freq_to',edtFreqTo.Text);
filini.WriteString('mode','mode',cmbMode.Text);
filini.WriteString('date','date_from',edtDateFrom.Text);
filini.WriteString('date','date_to',edtDateTo.Text);
filini.WriteString('locator','locator',edtLocator.Text);
filini.WriteBool('locator','exactly',rbExactlyLoc.Checked);
filini.WriteString('qth','qth',edtQTH.Text);
filini.WriteBool('qth','exactly',rbExactlyQth.Checked);
filini.WriteString('qsl','qsl_s',cmbQSL_S.Text);
filini.WriteString('qsl','qsl_r',cmbQSL_R.Text);
filini.WriteString('qsl','qsl_via',edtQSLVia.Text);
filini.WriteString('sort','sort',cmbSort.Text);
filini.WriteString('iota','iota',edtIOTA.Text);
filini.WriteBool('iota','exactly',rbExactlyIOTA.Checked);
filini.WriteBool('iota','iota_only',chkIOTAOnly.Checked);
filini.WriteString('remarks','remarks',edtRemarks.Text);
filini.WriteBool('remarks','exactly',rbExactlyRem.Checked);
filini.WriteString('award','award',edtDiplom.Text);
filini.Writebool('award','exactly',rbExactlyDiplom.Checked);
filini.WriteString('myloc','myloc',edtMyLoc.Text);
filini.WriteBool('myloc','exactly',rbExactlyMyLoc.Checked);
filini.WriteString('waz','waz',edtWAZ.Text);
filini.WriteString('itu','itu',edtITU.Text);
filini.WriteString('county','county',edtCounty.Text);
filini.WriteBool('county','exactly',rbExactlyCounty.Checked);
filini.WriteString('state','state',edtState.Text);
filini.WriteInteger('groupby','groupby',cmbGroupBy.ItemIndex);
filini.WriteInteger('profile','profile',cmbProfile.ItemIndex);
filini.WriteInteger('membership','membership',cmbMembers.ItemIndex);
filini.WriteString('lotw_qsls','lotw_qsls',cmbLoTW_qsls.Text);
filini.WriteString('lotw_qsls','lotw_qslr',cmbLoTW_qslr.Text);
filini.WriteString('cont','cont',edtCont.Text);
filini.WriteString('eQSL','eqsl_qsl_sent',cmbeQSL_qsls.Text);
filini.WriteString('eQSL','eqsl_qsl_rcvd',cmbeQSL_qslr.Text) ;
filini.WriteString('Power','power_from',edtPwrFrom.Text);
filini.WriteString('Power','power_to',edtPwrTo.Text);
filini.WriteBool('not','not',chkNot.Checked);
finally
filini.Free
end;
end;
end;
end.

View File

@ -239,12 +239,14 @@ begin
lblComment.Caption := 'Importing LoTW and eQSL users ...';
Application.ProcessMessages;
if FileExistsUTF8(Directory+'lotw1.txt') then
begin
DeleteFileUTF8(dmData.HomeDir+'lotw1.txt');
CopyFile(Directory+'lotw1.txt',dmData.HomeDir+'lotw1.txt');
dmData.LoadLoTWCalls
end;
if FileExistsUTF8(Directory+'eqsl.txt') then
begin
DeleteFileUTF8(dmData.HomeDir+'eqsl.txt');
@ -282,6 +284,12 @@ begin
dmSatellite.LoadPropModesFromFile
end;
if FileExistsUTF8(Directory + 'ContestName.tab') then
begin
DeleteFileUTF8(dmData.HomeDir + 'ContestName.tab');
CopyFile(Directory + 'ContestName.tab', dmData.HomeDir + 'ContestName.tab');
end;
lblComment.Caption := 'Importing IOTA table ...';
Application.ProcessMessages;
dmData.qIOTAList.Close();

View File

@ -7,7 +7,7 @@ object frmMain: TfrmMain
HelpKeyword = 'help/index.html'
ActiveControl = Panel2
Caption = 'CQRLOG for Linux'
ClientHeight = 601
ClientHeight = 603
ClientWidth = 874
Constraints.MinHeight = 148
Constraints.MinWidth = 536
@ -156,7 +156,7 @@ object frmMain: TfrmMain
OnCreate = FormCreate
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '1.8.4.0'
LCLVersion = '2.0.0.4'
object sbMain: TStatusBar
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
@ -164,8 +164,8 @@ object frmMain: TfrmMain
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 19
Top = 582
Height = 17
Top = 586
Width = 874
Panels = <
item
@ -195,7 +195,7 @@ object frmMain: TfrmMain
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 40
Top = 536
Top = 540
Width = 874
Align = alBottom
BorderSpacing.Bottom = 6
@ -208,7 +208,7 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = pnlButtons
AnchorSideTop.Control = pnlButtons
Left = 10
Height = 33
Height = 32
Top = 5
Width = 130
Action = acNewQSO
@ -224,7 +224,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = btnNewQSO
AnchorSideTop.Side = asrCenter
Left = 150
Height = 33
Height = 32
Top = 5
Width = 130
Action = acView
@ -238,7 +238,7 @@ object frmMain: TfrmMain
AnchorSideRight.Control = pnlButtons
AnchorSideRight.Side = asrBottom
Left = 734
Height = 33
Height = 32
Top = 5
Width = 130
Action = acClose
@ -253,7 +253,7 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = btnClose
Left = 594
Height = 33
Height = 32
Top = 5
Width = 130
Action = acDeleteQSO
@ -268,7 +268,7 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrCenter
AnchorSideRight.Control = btnDeleteQSO
Left = 454
Height = 33
Height = 32
Top = 5
Width = 130
Action = acSort
@ -284,7 +284,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = btnNewQSO
AnchorSideTop.Side = asrCenter
Left = 290
Height = 33
Height = 32
Top = 5
Width = 130
Action = acEditQSO
@ -299,7 +299,7 @@ object frmMain: TfrmMain
AnchorSideTop.Control = toolMain
AnchorSideRight.Control = toolMain
Left = 0
Height = 38
Height = 36
Top = 31
Width = 874
Align = alTop
@ -307,7 +307,7 @@ object frmMain: TfrmMain
BorderSpacing.Top = 5
BorderSpacing.InnerBorder = 5
BevelOuter = bvNone
ClientHeight = 38
ClientHeight = 36
ClientWidth = 874
TabOrder = 1
object lblQSOInLog: TLabel
@ -315,9 +315,9 @@ object frmMain: TfrmMain
AnchorSideTop.Control = Panel2
AnchorSideTop.Side = asrCenter
Left = 10
Height = 17
Height = 15
Top = 11
Width = 72
Width = 67
Alignment = taRightJustify
BorderSpacing.Left = 10
Caption = 'QSO in log:'
@ -330,10 +330,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblQSOInLog
AnchorSideBottom.Side = asrBottom
Left = 92
Height = 17
Left = 87
Height = 15
Top = 11
Width = 45
Width = 40
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 10
Caption = '10000'
@ -348,10 +348,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = Panel2
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = lblQSOInLog
Left = 417
Height = 17
Left = 419
Height = 15
Top = 11
Width = 40
Width = 36
Caption = 'DXCC:'
Layout = tlBottom
ParentColor = False
@ -362,10 +362,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblDXCCWorked
AnchorSideBottom.Side = asrBottom
Left = 467
Height = 17
Left = 465
Height = 15
Top = 11
Width = 27
Width = 24
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 10
Caption = '238'
@ -377,10 +377,10 @@ object frmMain: TfrmMain
object lblDXCCConfirmed: TLabel
AnchorSideTop.Control = lblQSOInLog
AnchorSideRight.Control = lblDXCCCmf
Left = 728
Height = 17
Left = 736
Height = 15
Top = 11
Width = 73
Width = 65
Alignment = taRightJustify
Anchors = [akTop, akRight]
BorderSpacing.Right = 10
@ -397,7 +397,7 @@ object frmMain: TfrmMain
AnchorSideBottom.Side = asrBottom
Left = 811
Height = 17
Top = 11
Top = 9
Width = 53
Anchors = [akRight, akBottom]
AutoSize = False
@ -417,14 +417,14 @@ object frmMain: TfrmMain
AnchorSideBottom.Control = pnlDetails
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 403
Top = 69
Height = 409
Top = 67
Width = 874
Align = alClient
Anchors = [akLeft, akRight, akBottom]
Color = clWindow
Columns = <>
Options = [dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiselect]
Options = [dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiselect, dgAutoSizeColumns]
PopupMenu = popWebSearch
Scrollbars = ssAutoBoth
TabOrder = 2
@ -719,7 +719,7 @@ object frmMain: TfrmMain
AnchorSideBottom.Side = asrBottom
Left = 0
Height = 64
Top = 472
Top = 476
Width = 874
Align = alBottom
BevelOuter = bvNone
@ -730,9 +730,9 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = pnlDetails
AnchorSideTop.Control = pnlDetails
Left = 10
Height = 17
Height = 15
Top = 10
Width = 122
Width = 113
BorderSpacing.Left = 10
BorderSpacing.Top = 10
Caption = 'Comment for QSO:'
@ -745,9 +745,9 @@ object frmMain: TfrmMain
AnchorSideTop.Control = lblCommentForQSO
AnchorSideTop.Side = asrBottom
Left = 10
Height = 17
Top = 37
Width = 44
Height = 15
Top = 35
Width = 42
BorderSpacing.Top = 10
Caption = 'Award:'
Layout = tlBottom
@ -759,10 +759,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblCommentForQSO
AnchorSideBottom.Side = asrBottom
Left = 142
Height = 17
Left = 133
Height = 15
Top = 10
Width = 85
Width = 80
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 10
Layout = tlBottom
@ -773,10 +773,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblAward
AnchorSideBottom.Side = asrBottom
Left = 64
Height = 17
Top = 37
Width = 61
Left = 62
Height = 15
Top = 35
Width = 59
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 10
Layout = tlBottom
@ -796,9 +796,9 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
Left = 7
Height = 17
Height = 15
Top = 10
Width = 70
Width = 66
BorderSpacing.Left = 7
BorderSpacing.Top = 10
Caption = 'QS_S date:'
@ -811,10 +811,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblQSLSDate
AnchorSideBottom.Side = asrBottom
Left = 89
Height = 17
Left = 85
Height = 15
Top = 10
Width = 85
Width = 81
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 12
Layout = tlBottom
@ -825,10 +825,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblQSLRDate
AnchorSideBottom.Side = asrBottom
Left = 90
Height = 17
Top = 37
Width = 86
Left = 85
Height = 15
Top = 35
Width = 81
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 12
Layout = tlBottom
@ -839,9 +839,9 @@ object frmMain: TfrmMain
AnchorSideTop.Control = lblQSLSDate
AnchorSideTop.Side = asrBottom
Left = 7
Height = 17
Top = 37
Width = 71
Height = 15
Top = 35
Width = 66
BorderSpacing.Top = 10
Caption = 'QS_R date:'
Layout = tlBottom
@ -863,9 +863,9 @@ object frmMain: TfrmMain
AnchorSideLeft.Control = Panel3
AnchorSideTop.Control = Panel3
Left = 7
Height = 17
Height = 15
Top = 10
Width = 110
Width = 103
BorderSpacing.Left = 7
BorderSpacing.Top = 10
Caption = 'LoTW QS_S date:'
@ -878,10 +878,10 @@ object frmMain: TfrmMain
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = lblLoTWQSLSDate
AnchorSideBottom.Side = asrBottom
Left = 134
Height = 17
Left = 127
Height = 15
Top = 10
Width = 90
Width = 86
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 17
Layout = tlBottom
@ -893,10 +893,10 @@ object frmMain: TfrmMain
AnchorSideTop.Side = asrCenter
AnchorSideBottom.Control = lblLoTWQSLRDate
AnchorSideBottom.Side = asrBottom
Left = 135
Height = 17
Top = 37
Width = 91
Left = 127
Height = 15
Top = 35
Width = 86
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 17
BorderSpacing.Top = 10
@ -907,9 +907,9 @@ object frmMain: TfrmMain
AnchorSideTop.Control = lblLoTWQSLSDate
AnchorSideTop.Side = asrBottom
Left = 7
Height = 17
Top = 37
Width = 111
Height = 15
Top = 35
Width = 103
BorderSpacing.Top = 10
Caption = 'LoTW QS_R date:'
Layout = tlBottom
@ -1307,42 +1307,6 @@ object frmMain: TfrmMain
Caption = 'Statistics'
object MenuItem11: TMenuItem
Caption = 'DXCC statistic'
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000874480FF833F
7EFF7F387DFF7C337CFF792E7BFFC63A13FFC63712FFC43112FFC02E11FFC02A
10FFBF270FFF7C4F25FF7A4A21FF77461EFF75421BFF733F19FF413DF3FF999B
FEFF9698FEFF9395FEFF9193FEFFC94315FFE0935DFFDF8F59FFDF8D55FFDE8A
51FFC02E11FFA2C99EFF9DC699FF98C395FF94C091FF276D2CFF4A47F5FF9EA0
FEFF5B5EFEFF5659FEFF9597FEFFCD4C16FFE19763FFDA8041FFD97D3BFFDF8F
58FFC63512FFA8CDA4FF77B071FF70AB6AFF9AC496FF2E7633FF5351F6FFA2A4
FEFF6266FEFF5D61FEFF999BFEFFCF5518FFE39C6CFFDC864AFFDB8344FFE094
5EFFC63C13FFAFD1ABFF80B77AFF79B273FFA0C89CFF35803CFF5B5BF8FFA8AA
FEFF6B6FFEFF6569FEFF9EA0FEFFD1601AFFE5A274FFDE8C53FFDD894DFFE299
66FFC94515FFB5D5B0FF8ABD83FF83B87DFFA7CDA3FF3D8B44FF6364FAFFACAF
FEFF7276FEFF6D71FEFFA2A4FEFFD6691EFFE7A77BFFE0925CFFDF8F56FFE49E
6EFFCD4E16FFBAD9B5FFB7D6B1FFB3D3AEFFAED1A9FF45964DFF6A6CFCFFB0B3
FEFF797EFEFF7579FEFFA8AAFEFFD8742AFFE8AD83FFE29865FFE19560FFE5A3
76FFCF5718FF60BC6CFF5CB667FF57B061FF52A85CFF4DA155FF7073FDFFB4B7
FEFF8185FEFF7C81FEFFACAFFEFFD97B39FFEAB28AFFE49F6EFFE39C6AFFE7A8
7DFFD1621AFF00000000000000000000000000000000000000007478FEFFB8BB
FEFFB6B9FEFFB3B6FEFFB0B3FEFFDF8445FFECB792FFE6A578FFE6A273FFE9AD
85FFD66B1EFF00000000000000000000000000000000000000007478FEFF7478
FEFF7276FEFF6E71FDFF6A6CFCFFE18D52FFEDBB99FFE9AC81FFE7A87CFFEAB3
8DFFD8742CFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000E2925CFFEEC1A0FFEAB189FFE9AE85FFEDB7
94FFDB7C3AFF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000E69B67FFF0C5A6FFECB691FFEBB38CFFEEBC
9BFFDF8547FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000E8A070FFF2C8ACFFF0C6A8FFF0C5A6FFEFC2
A2FFE18E53FF0000000000000000000000000000000000000000000000000000
0000000000000000000000000000EAA677FFE8A474FFE8A06EFFE69D6BFFE499
65FFE2955EFF000000000000000000000000000000000000000038FDF200C803
EA0038FDF20038FDF20000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
Hint = 'DXCC statistic'
ImageIndex = 8
object MenuItem46: TMenuItem
@ -1559,42 +1523,6 @@ object frmMain: TfrmMain
RightJustify = True
object mnuHelpIndex: TMenuItem
Caption = 'Help index'
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000560151001806
520058015200160653004A02E600290000008888F500B001EA004C02E900D103
EA004E02EA00CF03EB00C00048001314150000040000380000000202F5003604
F6005801E3001606E4006211CE00603B95009E6056FFA16844FFA36642FF925B
50FF7A3490002D134A0054014E001A06500055015000190651000202FE003604
FF000002FF00612C1A00BA7046FFD7BBA3FFE9DACAFFECE0D1FFECE0D1FFE8D8
C8FFD3B59CFF9D614CFFE224B6003904F4000002F4003804F500FE0232009204
3300E92E4100B98159FFE7D5C4FFE5D2BFFFC9A685FFB88E67FFB68A65FFC5A1
80FFE0CCBAFFE3D0BEFFAF6B45FF992790000003B8009004B900920159003D17
5D00BE8368FFEAD8C9FFE3CDBAFFC0946BFFBA8C62FFCFB094FFCFB094FFB789
5FFFB28761FFDAC0AAFFE4D1C0FFA0694FFF171233009004320050031200AB51
4500E4CCB9FFEAD6C5FFC79971FFBF9066FFBF9066FFF7F1ECFFF6F0EAFFB789
5FFFB7895FFFB58963FFE2CEBBFFD9BDA6FFA23E53002703590009000000D6B1
7AFFEFE1D3FFD9B595FFC7986CFFC39569FFC19367FFBF9066FFBF9066FFBB8B
63FFB98A63FFB88A62FFCBA786FFEADCCCFFA9714DFF8A0512001049F300D5AE
92FFF2E4D9FFD1A57AFFC5996BFFC4976AFFC49669FFFAF6F2FFF3EAE1FFC295
6DFFBE8F65FFBE8F64FFC0956DFFEFE3D5FFC08D60FF4849F30056015100D9B2
97FFF2E5DAFFD1A67EFFCC9D71FFC79A6CFFC5986BFFE2CCB6FFF8F3EEFFF6EE
E8FFD9BDA1FFC29468FFC59B71FFF0E2D6FFBE9068FF38000000FE02B700DBA7
A6FFF3E5D9FFDFBB9EFFCFA075FFCD9E72FFF5EBE3FFE4CBB4FFE7D3BFFFFBF8
F6FFE5D3BFFFC4986BFFD6B491FFEEE0D2FFBB8872FF190651000002F4009065
D100F4E3D4FFEFDCCDFFD5A87EFFD0A077FFFBF8F5FFFCF8F5FFFCF8F5FFFBF8
F5FFD1A881FFCFA47BFFEAD5C3FFEAD4C2FFE8549D009304B700FB023600A11F
B400E6B9AAFFF6E9DDFFECD8C6FFD7AC81FFDCBB9AFFF6ECE3FFF5ECE2FFE4C8
AEFFD2A77BFFE6CEBAFFF1E2D5FFCBA19BFFFA18E6003904F400520310008905
110086474800EEC9B1FFF7EADFFFEEDED0FFE3C1A7FFD8AE89FFD7AC86FFDDBB
9CFFEBD6C7FFF3E6D9FFE4B69AFFAC405600FC023400940436005401E6001A06
E8005301E800624A7300DDC1C3FFF9E9DCFFF6E8DDFFF3E5DAFFF3E5DAFFF5E7
DCFFF5E4D6FFDAB49BFFF74139003B04F10054030F008705100009000000E8EE
43000C0000001847F3003E1E1B00D06C5F00DCDCAEFFECCDC0FFE9CBB3FFE5B6
A3FFA367CE003421DE005601E4001806E5005501E5001906E600F803EA0060F0
3E0000000000000000001D0200001F0000000000000040972500640020000000
0000000000000000000003000000C9010000E8AD4500C8983900
}
ImageIndex = 14
OnClick = mnuHelpIndexClick
end
@ -1962,8 +1890,6 @@ object frmMain: TfrmMain
top = 385
end
object dlgOpen: TOpenDialog
Width = 441
Height = 468
DefaultExt = '.adi'
Filter = 'ADIF|*.adi|ADIF|*.ADI'
FilterIndex = 0

View File

@ -2102,7 +2102,12 @@ begin
ChangeVis('COUNTRY',cqrini.ReadBool('Columns','Country',False));
ChangeVis('PROP_MODE', cqrini.ReadBool('Columns', 'Propagation', False));
ChangeVis('RXFREQ', cqrini.ReadBool('Columns', 'RXFreq', False));
ChangeVis('SATELLITE', cqrini.ReadBool('Columns', 'SatelliteName', False))
ChangeVis('SATELLITE', cqrini.ReadBool('Columns', 'SatelliteName', False));
ChangeVis('CONTESTNAME', cqrini.ReadBool('Columns', 'ContestName', False));
ChangeVis('STX',cqrini.ReadBool('Columns', 'STX', False));
ChangeVis('SRX',cqrini.ReadBool('Columns', 'SRX', False));
ChangeVis('STX_STRING',cqrini.ReadBool('Columns', 'ContMsgSent', False));
ChangeVis('SRX_STRING',cqrini.ReadBool('Columns', 'ContMsgRcvd', False));
end;
procedure TfrmMain.MarkQSLSend(symbol: string);

View File

@ -176,7 +176,7 @@ var
msgRes :string;
CqDir : string;
mycont, cont, country, waz, posun, itu, pfx, lat, long: string;
adif : word;
dxcc_number_adif : word;
Dfreq,Snr:integer;
isMyCall: boolean;
CurMode: string = ''; //mode in human readable format
@ -819,6 +819,7 @@ var
i, j: integer;
begin
tmrCqPeriod.Enabled := False;
if LocalDbg then Writeln('Period timer hit the time!');
if (chknoHistory.Checked) then
begin
for i:= 0 to 7 do
@ -842,16 +843,20 @@ begin
end;
procedure TfrmMonWsjtx.CqPeriodTimerStart;
var
tmr: integer;
begin
tmrCqPeriod.Enabled := False;
if CurMode = 'FT8' then
tmrCqPeriod.Interval := 16000
else
tmrCqPeriod.Interval := 61000;
tmr := 61000;
case CurMode of
'FT8': tmr := 16000;
'FT4': tmr := 6500;
end;
tmrCqPeriod.Interval := tmr;
if LocalDbg then Writeln('Period timer set to: ',tmr);
tmrCqPeriod.Enabled := True;
end;
procedure TfrmMonWsjtx.cmFontClick(Sender: TObject);
begin
popFontDlg.Font.Name := cqrini.ReadString('MonWsjtx', 'Font', 'Monospace');
@ -1636,7 +1641,7 @@ begin
myAlert := '';
MonitorLine := '';
adif := dmDXCC.id_country(
dxcc_number_adif := dmDXCC.id_country(
UpperCase(cqrini.ReadString('Station', 'Call', '')), '', Now(), pfx,
mycont, country, WAZ, posun, ITU, lat, long);
@ -1775,7 +1780,7 @@ begin
if frmWorkedGrids.GridOK(msgLocator) then AddXpList(msgCall,msgLocator);
adif := dmDXCC.id_country(msgCall, '', Now(), pfx, cont,
dxcc_number_adif := dmDXCC.id_country(msgCall, '', Now(), pfx, cont,
msgRes, WAZ, posun, ITU, lat, long);
if (pos(',', msgRes)) > 0 then
msgRes := copy(msgRes, 1, pos(',', msgRes) - 1);
@ -1815,7 +1820,7 @@ begin
if (not chkMap.Checked) then
begin
freq := dmUtils.FreqFromBand(CurBand, CurMode);
msgRes := dmDXCC.DXCCInfo(adif, freq, CurMode, i); //wkd info
msgRes := dmDXCC.DXCCInfo(dxcc_number_adif, freq, CurMode, i); //wkd info
if LocalDbg then
Writeln('Looking this>', msgRes[1], '< from:', msgRes);
@ -1864,8 +1869,9 @@ function TfrmMonWsjtx.getCurMode(sMode: String): String;
'@' : getCurMode := 'JT9';
'&' : getCurMode := 'MSK144';
':' : getCurMode := 'QRA64';
'+' : getCurMode := 'T10';
'+' : getCurMode := 'FT4';
chr(126): getCurMode := 'FT8';
//'+' : getCurMode := 'T10';
end;
end;

View File

@ -1,13 +1,13 @@
object frmNewQSO: TfrmNewQSO
Left = 156
Left = 279
Height = 709
Top = 0
Width = 809
Top = 64
Width = 997
HelpType = htKeyword
HelpKeyword = 'help/index.html'
Caption = 'New QSO ... (CQRLOG for Linux)'
ClientHeight = 686
ClientWidth = 809
ClientHeight = 684
ClientWidth = 997
Icon.Data = {
3E08010000000100010080800000010020002808010016000000280000008000
0000000100000100200000000000000001006400000064000000000000000000
@ -2161,36 +2161,41 @@ object frmNewQSO: TfrmNewQSO
end
object Panel1: TPanel
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 0
Height = 551
Top = 110
Width = 809
Top = 114
Width = 997
Align = alBottom
ClientHeight = 551
ClientWidth = 809
ClientWidth = 997
TabOrder = 0
object Panel3: TPanel
AnchorSideLeft.Control = Panel1
Left = 1
Height = 511
Top = 39
Width = 545
Width = 733
Align = alClient
BevelOuter = bvNone
ClientHeight = 511
ClientWidth = 545
ClientWidth = 733
TabOrder = 0
object Panel6: TPanel
AnchorSideLeft.Control = Panel3
AnchorSideTop.Control = Panel3
Left = 0
Height = 511
Top = 0
Width = 545
Width = 733
Align = alClient
Anchors = [akTop, akLeft, akRight]
BorderSpacing.InnerBorder = 2
BevelOuter = bvNone
ClientHeight = 511
ClientWidth = 545
ClientWidth = 733
ParentShowHint = False
TabOrder = 0
object lblCommentToCallsign: TLabel
AnchorSideLeft.Control = lblCounty
@ -3489,9 +3494,9 @@ object frmNewQSO: TfrmNewQSO
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel6
Left = 0
Height = 171
Top = 340
Width = 545
Height = 135
Top = 376
Width = 733
ActivePage = tabDXCCStat
Align = alBottom
Anchors = [akTop, akLeft, akRight]
@ -3500,13 +3505,13 @@ object frmNewQSO: TfrmNewQSO
TabOrder = 28
object tabDXCCStat: TTabSheet
Caption = 'DXCC statistic'
ClientHeight = 136
ClientWidth = 539
ClientHeight = 104
ClientWidth = 723
object sgrdStatistic: TStringGrid
Left = 0
Height = 136
Top = 0
Width = 539
Width = 723
Align = alClient
ColCount = 2
DefaultColWidth = 35
@ -3522,8 +3527,8 @@ object frmNewQSO: TfrmNewQSO
end
object tabSatellite: TTabSheet
Caption = 'Satellite'
ClientHeight = 136
ClientWidth = 539
ClientHeight = 104
ClientWidth = 723
object cmbPropagation: TComboBox
AnchorSideLeft.Control = lblStatellite
AnchorSideTop.Control = lblPropagation
@ -3635,12 +3640,163 @@ object frmNewQSO: TfrmNewQSO
end
end
end
object gbContest: TGroupBox
AnchorSideLeft.Control = mComment
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel6
Left = 554
Height = 231
Top = 0
Width = 380
Anchors = [akTop, akLeft, akBottom]
BorderSpacing.Left = 20
Caption = 'Contest'
ClientHeight = 213
ClientWidth = 378
TabOrder = 29
Visible = False
object lblContestName: TLabel
AnchorSideLeft.Control = gbContest
AnchorSideTop.Control = gbContest
Left = 3
Height = 17
Top = 3
Width = 87
BorderSpacing.Left = 3
BorderSpacing.Top = 3
Caption = 'Contestname'
ParentColor = False
end
object lblContestSerialSent: TLabel
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = edtContestName
AnchorSideTop.Side = asrBottom
Left = 3
Height = 17
Top = 63
Width = 69
BorderSpacing.Top = 6
Caption = 'Serial sent'
ParentColor = False
end
object lblContestSerialReceived: TLabel
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = edtContestSerialSent
AnchorSideTop.Side = asrBottom
Left = 3
Height = 17
Top = 123
Width = 69
BorderSpacing.Top = 6
Caption = 'Serial rcvd'
ParentColor = False
end
object lblContestExchangeMessageSent: TLabel
AnchorSideLeft.Control = lblContestSerialSent
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblContestSerialSent
Left = 81
Height = 17
Top = 63
Width = 59
BorderSpacing.Left = 9
Caption = 'Msg sent'
ParentColor = False
end
object lblContestExchangeMessageReceived: TLabel
AnchorSideLeft.Control = lblContestExchangeMessageSent
AnchorSideTop.Control = lblContestSerialReceived
Left = 81
Height = 17
Top = 123
Width = 59
Caption = 'Msg rcvd'
ParentColor = False
end
object edtContestName: TEdit
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = lblContestName
AnchorSideTop.Side = asrBottom
Left = 3
Height = 34
Hint = 'name of contest, max 40 characters allowed'
Top = 23
Width = 372
BorderSpacing.Top = 3
MaxLength = 40
ParentShowHint = False
ShowHint = True
TabOrder = 0
TextHint = 'max 40 characters'
end
object edtContestSerialSent: TEdit
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = lblContestSerialSent
AnchorSideTop.Side = asrBottom
Left = 3
Height = 34
Hint = 'serial number sent of contest, max 6 characters'
Top = 83
Width = 64
BorderSpacing.Top = 3
MaxLength = 6
ParentShowHint = False
ShowHint = True
TabOrder = 1
end
object edtContestSerialReceived: TEdit
AnchorSideLeft.Control = lblContestName
AnchorSideTop.Control = lblContestSerialReceived
AnchorSideTop.Side = asrBottom
Left = 3
Height = 34
Hint = 'rserial number received of contest, max 6 characters'
Top = 146
Width = 64
BorderSpacing.Top = 6
MaxLength = 6
ParentShowHint = False
ShowHint = True
TabOrder = 2
end
object edtContestExchangeMessageSent: TEdit
AnchorSideLeft.Control = lblContestExchangeMessageSent
AnchorSideTop.Control = edtContestSerialSent
AnchorSideTop.Side = asrCenter
Left = 81
Height = 34
Hint = 'contest exchange message sent, max 50 characters'
Top = 83
Width = 292
BorderSpacing.Top = 6
MaxLength = 50
ParentShowHint = False
ShowHint = True
TabOrder = 3
TextHint = 'max 50 characters'
end
object edtContestExchangeMessageReceived: TEdit
AnchorSideLeft.Control = lblContestExchangeMessageReceived
AnchorSideTop.Control = edtContestSerialReceived
AnchorSideTop.Side = asrCenter
Left = 81
Height = 34
Hint = 'contest exchange message received, max 50 characters'
Top = 146
Width = 292
MaxLength = 50
ParentShowHint = False
ShowHint = True
TabOrder = 4
TextHint = 'max 50 characters'
end
end
end
end
object Panel2: TPanel
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Panel1
Left = 546
Left = 734
Height = 511
Top = 39
Width = 262
@ -4286,12 +4442,13 @@ object frmNewQSO: TfrmNewQSO
Left = 1
Height = 38
Top = 1
Width = 807
Width = 995
Align = alTop
Anchors = [akTop, akLeft, akRight, akBottom]
AutoSize = True
BevelOuter = bvNone
ClientHeight = 38
ClientWidth = 807
ClientWidth = 995
TabOrder = 2
object lblQSONr: TLabel
AnchorSideLeft.Control = lblQSONrDesc
@ -4402,7 +4559,7 @@ object frmNewQSO: TfrmNewQSO
Left = 0
Height = 110
Top = 0
Width = 809
Width = 997
Align = alClient
Color = clWindow
Columns = <>
@ -6647,7 +6804,7 @@ object frmNewQSO: TfrmNewQSO
object tmrN1MM: TTimer
Enabled = False
OnTimer = tmrN1MMTimer
left = 584
top = 200
left = 800
top = 32
end
end

View File

@ -89,7 +89,18 @@ type
cmbPropagation : TComboBox;
cmbSatellite : TComboBox;
dbgrdQSOBefore: TDBGrid;
edtContestExchangeMessageReceived: TEdit;
edtContestExchangeMessageSent: TEdit;
edtContestSerialReceived: TEdit;
edtContestSerialSent: TEdit;
edtContestName: TEdit;
edtRXFreq : TEdit;
gbContest: TGroupBox;
lblContestExchangeMessageReceived: TLabel;
lblContestExchangeMessageSent: TLabel;
lblContestSerialReceived: TLabel;
lblContestSerialSent: TLabel;
lblContestName: TLabel;
lblCallbookInformation : TLabel;
lblPropagation : TLabel;
lblStatellite : TLabel;
@ -1881,6 +1892,7 @@ var
prik,
data:string;
chkDuplicates:Boolean;
i:longint;
begin
tmrN1MM.Enabled:=false;
@ -1895,6 +1907,9 @@ begin
if N1MMSock.lasterror=0 then
begin
if dmData.DebugLevel>=1 then writeln(Buf);
//this is fake as call info(qslmgr) needs date. We use current date if call tag comes before qso_date tag
//qso_date will then replace this
edtDate.Text := FormatDateTime('YYYY-MM-DD',now());
repeat
begin
if frmAdifImport.getNextAdifTag(Buf,prik,data) then
@ -1904,8 +1919,17 @@ begin
writeln(data);
end;
case uppercase(prik) of
'CALL' : edtCall.Text := uppercase(data);
'GRIDSQUARE' : edtGrid.Text := uppercase(data);
'CALL' : Begin
edtCall.Text := uppercase(data);
edtCallExit(nil); //does info fetch
sleep(1500);
end;
'GRIDSQUARE' :Begin
data := uppercase(data);
if dmUtils.IsLocOK(data) then
if pos(data,edtGrid.Text)=0 then //if qso loc does not fit to QRZ loc , or qrz loc is empty
edtGrid.Text := data; //replace qrz loc, otherwise keep it
end;
'MODE' : cmbMode.Text := uppercase(data);
//now this overrides MODE, if exists
'SUBMODE' : cmbMode.Text := uppercase(data);
@ -1923,6 +1947,17 @@ begin
'NAME' : edtName.Text := data;
'QTH' : edtQTH.Text := data;
'COMMENT': edtRemQSO.Text := data;
'IOTA' : cmbIOTA.Text := data;
'STATE' : edtState.Text := data;
'CQZ' : edtWaz.Text := data;
'ITUZ' : edtITU.Text := data;
'CONTEST_ID': edtContestName.Text := data;
'STX': edtContestSerialSent.Text := data;
'SRX': edtContestSerialReceived.Text := data;
//N1MM logger+ definition does not have STXString tag. Added anyway(future?).
'STX_STRING':edtContestExchangeMessageSent.Text := data;
//same with SRX
'SRX_STRING': edtContestExchangeMessageReceived.Text:= data;
end; //case
end; //repeat
until Buf = '';
@ -2044,39 +2079,67 @@ procedure TfrmNewQSO.tmrWsjtSpdTimer(Sender: TObject);
var
Hour,Min,Sec,HSec : word;
begin
if (WsjtxMode='FT8') then
begin
DecodeTime(Time,Hour,Min,Sec,HSec);
if dmData.DebugLevel>=1 then Writeln(' Timer FT8 mode - Sec is: ',Sec);
case Sec of
13,28,43,58 :
begin //set hispeed decode time is coming
if ( tmrWsjtx.Interval = wLoSpeed ) then
begin
if dmData.DebugLevel>=1 then Writeln ('Timer >> Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wHiSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer >> Setting UDP decode to FT8 HiSpeed ', tmrWsjtx.Interval);
end;
end;
2,17,32,47 :
begin //set lospeed decode time is over
if ( tmrWsjtx.Interval = wHiSpeed ) then //we did not have UFT8-mode. Is HiSpeed still on?
Begin
if dmData.DebugLevel>=1 then Writeln(' Timer << Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wLoSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer << Setting UDP decode to FT8 LoSpeed ', tmrWsjtx.Interval);
end;
end;
end;
end
else
if ( tmrWsjtx.Interval = wHiSpeed ) then //we did not have UFT8-mode. Is HiSpeed still on?
Begin
tmrWsjtx.Interval := wLoSpeed; // turn it off then
if dmData.DebugLevel>=1 then Writeln('Setting UDP decode to LoSpeed not in FT8 mode ',tmrWsjtx.Interval);
end;
end;
case WsjtxMode of
'FT4':begin
DecodeTime(Time,Hour,Min,Sec,HSec);
if dmData.DebugLevel>=1 then Writeln(' Timer FT mode - Sec is: ',Sec);
case Sec of
4,10,16,22,28,34,40,46,52,58 :
begin //set hispeed decode time is coming
if ( tmrWsjtx.Interval = wLoSpeed ) then
begin
if dmData.DebugLevel>=1 then Writeln ('Timer >> Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wHiSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer >> Setting UDP decode to FT HiSpeed ', tmrWsjtx.Interval);
end;
end;
0,6,12,18,24,30,36,42,48,54 :
begin //set lospeed decode time is over
if ( tmrWsjtx.Interval = wHiSpeed ) then //we did not have UFT8-mode. Is HiSpeed still on?
Begin
if dmData.DebugLevel>=1 then Writeln(' Timer << Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wLoSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer << Setting UDP decode to FT LoSpeed ', tmrWsjtx.Interval);
end;
end;
end;
end;
'FT8':begin
DecodeTime(Time,Hour,Min,Sec,HSec);
if dmData.DebugLevel>=1 then Writeln(' Timer FT mode - Sec is: ',Sec);
case Sec of
13,28,43,58 :
begin //set hispeed decode time is coming
if ( tmrWsjtx.Interval = wLoSpeed ) then
begin
if dmData.DebugLevel>=1 then Writeln ('Timer >> Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wHiSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer >> Setting UDP decode to FT HiSpeed ', tmrWsjtx.Interval);
end;
end;
2,17,32,47 :
begin //set lospeed decode time is over
if ( tmrWsjtx.Interval = wHiSpeed ) then //we did not have UFT8-mode. Is HiSpeed still on?
Begin
if dmData.DebugLevel>=1 then Writeln(' Timer << Sec is: ',Sec,' ',tmrWsjtx.Interval,'=',wLoSpeed );
tmrWsjtx.Interval := wLoSpeed;
if dmData.DebugLevel>=1 then Writeln(' Timer << Setting UDP decode to FT LoSpeed ', tmrWsjtx.Interval);
end;
end;
end;
end;
else Begin
if ( tmrWsjtx.Interval = wHiSpeed ) then //we did not have UFT8-mode. Is HiSpeed still on?
Begin
tmrWsjtx.Interval := wLoSpeed; // turn it off then
if dmData.DebugLevel>=1 then Writeln('Setting UDP decode to LoSpeed not in FT mode ',tmrWsjtx.Interval);
end;
end;
end;
end;
procedure TfrmNewQSO.tmrWsjtxTimer(Sender: TObject);
const
ContestName : array [0..6] of string = ( '','NA VHF','EU VHF','FIELD DAY','RTTY RU','FOX','HOUND' );
@ -2494,16 +2557,14 @@ begin
rstR := '';
note := '';
pwr := '';
//date := dmUtils.GetDateTime(0);
edtDate.Clear;
//dmUtils.DateInRightFormat(date,Mask,sDate);
//edtDate.Text:=sDate;
//----------------------------------------------------
if TryJulianDateToDateTime(int64Buf(index),DTim) then //date (not used in cqrlog)
if TryJulianDateToDateTime(int64Buf(index),DTim) then //date
if dmData.DebugLevel>=1 then Writeln('End Date :',FormatDateTime('YYYY-MM-DD',DTim));
// we do not use end date:
// we use end date here because dmData.QSLMgrFound() needs date.
//if not set causes "'' is not valid date error" sometimes (usually at first logged qso)
//edtDate.Text is reset later below to be real qso start date
edtDate.Text := FormatDateTime('YYYY-MM-DD',DTim);
//-----------------------------------------TIME-----------
ParNum := ui32Buf(index); //set qso end time
Min := ParNum div 60000; //minutes from 00:00 UTC
@ -2611,7 +2672,7 @@ begin
end;
if dmData.DebugLevel>=1 then Writeln('edtName before pressing save:',edtName.Text );
//----------------------------------------------------
if TryJulianDateToDateTime(int64Buf(index),DTim) then //date (not used in cqrlog)
if TryJulianDateToDateTime(int64Buf(index),DTim) then
//start date used
dmUtils.DateInRightFormat(DTim,Mask,sDate);
edtDate.Text:=sDate;
@ -2642,10 +2703,57 @@ begin
ExchS := trim(StrBuf(index)); //contest exchange sent. report + others
ExchR := trim(StrBuf(index)); //contest exchange received. report + others
//----------------------------------------------------
// until we get proper database fields contest name and exchange info is added
// as "comment to qso" to exist somewhere in logged qso.
if ContestNr > 0 then
edtRemQSO.Text := ContestName[ContestNr]+'=S:'+ExchS+'/R:'+ExchR+' '+edtRemQSO.Text;
{
These wsjt-x will return as contest number:
* 0 -> NONE
* 1 -> NA VHF
* 2 -> EU VHF
* 3 -> FIELD DAY
* 4 -> RTTY RU
* 5 -> FOX
* 6 -> HOUND
}
case ContestNr of
1 :Begin //NA VHF EX:locator-4chr
edtContestName.Text := ContestName[ContestNr];
edtContestExchangeMessageReceived.Text := ExchR;
edtContestExchangeMessageSent.Text := ExchS;
edtHisRST.Text := ' '; // NA-VHF has no proper reports (!?!)
edtMyRST.Text := ' '; // fake space here. Otherwise qso edit sets 599 for reports
end;
2 :Begin //EU VHF EX:RS-2chr/serial-4chr/ /locator
edtContestName.Text := ContestName[ContestNr];
edtContestSerialReceived.Text := copy(ExchR,3,4); //serialNr
edtContestExchangeMessageReceived.Text:= copy(ExchR,8,6); //exMsg=locator
edtContestSerialSent.Text := copy(ExchS,3,4); //serialNr
edtContestExchangeMessageSent.Text:= copy(ExchS,8,6); //exMsg=locator
edtHisRST.Text := edtHisRST.Text+' '; // fake space here. Otherwise qso edit sets xx9 for reports
edtMyRST.Text := edtMyRST.Text+' ';
end;
3 :Begin //FIELD DAY EX:TXnrClass/ /state
edtContestName.Text := ContestName[ContestNr];
edtContestExchangeMessageReceived.Text := ExchR;
edtContestExchangeMessageSent.Text := ExchS;
edtHisRST.Text := ' '; // FD has no proper reports (!?!)
edtMyRST.Text := ' '; // fake space here. Otherwise qso edit sets 599 for reports
end;
4 :Begin //RTTY RU EX:RST-3chr/ /serial-4chr[or] state(not numbers)
edtContestName.Text := ContestName[ContestNr];
if (ExchS[5] in [ 'A' .. 'Z' ]) then
edtContestExchangeMessageSent.Text:= copy(ExchS,5,length(ExchS)) //exMsg=state
else
edtContestSerialSent.Text := copy(ExchS,5,length(ExchS)); //serialNr
if (ExchR[5] in [ 'A' .. 'Z' ]) then
edtContestExchangeMessageReceived.Text:= copy(ExchR,5,length(ExchR)) //exMsg=state
else
edtContestSerialReceived.Text := copy(ExchR,5,length(ExchR)); //serialNr
end;
5,6 : edtContestName.Text := ContestName[ContestNr]+'-QSO';
end;
case ContestNr of
1,2,3,4 : edtContestSerialReceived.Text := copy( edtContestSerialReceived.Text,1,6); //Max Db length=6
end;
//----------------------------------------------------
if dmData.DebugLevel>=1 then Writeln(' WSJTX decode #5 logging: press save');
SaveRemote;
@ -2839,7 +2947,12 @@ begin
dmSatellite.GetPropShortName(cmbPropagation.Text),
dmSatellite.GetSatShortName(cmbSatellite.Text),
RxFreq,
id);
id,
edtContestSerialReceived.Text,
edtContestSerialSent.Text,
edtContestExchangeMessageReceived.Text,
edtContestExchangeMessageSent.Text,
edtContestName.Text);
if (old_call<>edtCall.Text) or (old_mode<>cmbMode.Text) or (StrToFloat(old_freq)<>StrToFloat(cmbFreq.Text)) or
(old_date<>StrToDate(edtDate.Text)) or (old_time<>edtStartTime.Text) or (old_rsts<>edtHisRST.Text) or
(old_rstr<>edtMyRST.Text) then
@ -2926,7 +3039,12 @@ begin
frmQSODetails.ClubNR5,
dmSatellite.GetPropShortName(cmbPropagation.Text),
dmSatellite.GetSatShortName(cmbSatellite.Text),
RxFreq
RxFreq,
edtContestSerialReceived.Text,
edtContestSerialSent.Text,
edtContestExchangeMessageReceived.Text,
edtContestExchangeMessageSent.Text,
edtContestName.Text
)
end;
if fEditQSO and (not fromNewQSO) then
@ -4896,7 +5014,9 @@ begin
RunVK(dmUtils.GetDescKeyFromCode(Key))
else
if Assigned(CWint) then
CWint.SendText(dmUtils.GetCWMessage(dmUtils.GetDescKeyFromCode(Key),edtCall.Text,edtHisRST.Text,edtName.Text,lblGreeting.Caption,''));
CWint.SendText(dmUtils.GetCWMessage(dmUtils.GetDescKeyFromCode(Key),frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
key := 0
end;
@ -5675,7 +5795,12 @@ begin
end;
dmSatellite.GetListOfSatellites(cmbSatellite, dmData.qQSOBefore.FieldByName('satellite').AsString);
dmSatellite.GetListOfPropModes(cmbPropagation, dmData.qQSOBefore.FieldByName('prop_mode').AsString);
edtRXFreq.Text := FloatToStr(dmData.qQSOBefore.FieldByName('rxfreq').AsFloat)
edtRXFreq.Text := FloatToStr(dmData.qQSOBefore.FieldByName('rxfreq').AsFloat);
edtContestName.Text := dmData.qQSOBefore.FieldByName('contestname').AsString;
edtContestSerialSent.Text := dmData.qQSOBefore.FieldByName('stx').AsString;
edtContestSerialReceived.Text := dmData.qQSOBefore.FieldByName('srx').AsString;
edtContestExchangeMessageSent.Text := dmData.qQSOBefore.FieldByName('stx_string').AsString;
edtContestExchangeMessageReceived.Text := dmData.qQSOBefore.FieldByName('srx_string').AsString;
end
else begin
cmbProfiles.Text := dmData.GetProfileText(dmData.qCQRLOG.FieldByName('profile').AsInteger);
@ -5708,6 +5833,11 @@ begin
edtAward.Text := dmData.qCQRLOG.FieldByName('award').AsString;
edtState.Text := dmData.qCQRLOG.FieldByName('state').AsString;
lotw_qslr := dmData.qCQRLOG.FieldByName('lotw_qslr').AsString;
edtContestName.Text := dmData.qCQRLOG.FieldByName('contestname').AsString;
edtContestSerialSent.Text := dmData.qCQRLOG.FieldByName('stx').AsString;
edtContestSerialReceived.Text := dmData.qCQRLOG.FieldByName('srx').AsString;
edtContestExchangeMessageSent.Text := dmData.qCQRLOG.FieldByName('stx_string').AsString;
edtContestExchangeMessageReceived.Text := dmData.qCQRLOG.FieldByName('srx_string').AsString;
if lotw_qslr = 'L' then
begin
lblCfmLoTW.Caption := 'QSO confirmed by LoTW ' + dmData.qCQRLOG.FieldByName('lotw_qslrdate').AsString;
@ -6759,3 +6889,4 @@ end;
end.

View File

@ -1,7 +1,7 @@
object frmPreferences: TfrmPreferences
Left = 105
Left = 169
Height = 659
Top = 33
Top = 65
Width = 1000
HelpType = htKeyword
HelpKeyword = 'help/h1.html'
@ -14,16 +14,16 @@ object frmPreferences: TfrmPreferences
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '1.8.4.0'
LCLVersion = '2.0.0.4'
object pgPreferences: TPageControl
Left = 160
Height = 659
Top = 0
Width = 752
ActivePage = tabFldigi1
ActivePage = tabVisibleColumns
Align = alClient
Anchors = [akLeft, akRight, akBottom]
TabIndex = 20
TabIndex = 3
TabOrder = 0
OnChange = pgPreferencesChange
object tabProgram: TTabSheet
@ -838,333 +838,555 @@ object frmPreferences: TfrmPreferences
ClientHeight = 628
ClientWidth = 742
object chkDate: TCheckBox
Left = 14
AnchorSideLeft.Control = tabVisibleColumns
AnchorSideTop.Control = tabVisibleColumns
Left = 18
Height = 23
Top = 12
Top = 6
Width = 57
BorderSpacing.Left = 18
BorderSpacing.Top = 6
Caption = 'Date'
TabOrder = 0
end
object chkTimeOn: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkDate
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 43
Top = 32
Width = 79
BorderSpacing.Top = 3
Caption = 'Time on'
TabOrder = 1
end
object chkTimeOff: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkTimeOn
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 75
Top = 58
Width = 80
BorderSpacing.Top = 3
Caption = 'Time off'
TabOrder = 2
end
object chkCallSign: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkTimeOff
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 107
Top = 84
Width = 79
BorderSpacing.Top = 3
Caption = 'CallSign'
TabOrder = 3
end
object chkMode: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkCallSign
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 139
Top = 110
Width = 62
BorderSpacing.Top = 3
Caption = 'Mode'
TabOrder = 4
end
object chkFreq: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkMode
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 171
Top = 136
Width = 54
BorderSpacing.Top = 3
Caption = 'Freq'
TabOrder = 5
end
object chkQSL_S: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkQTH
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 334
Top = 266
Width = 83
BorderSpacing.Top = 3
Caption = 'QSL sent'
TabOrder = 6
end
object chkQSL_R: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkQSL_S
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 366
Top = 292
Width = 111
BorderSpacing.Top = 3
Caption = 'QSL received'
TabOrder = 7
end
object chkRST_S: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkFreq
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 203
Top = 162
Width = 83
BorderSpacing.Top = 3
Caption = 'RST sent'
TabOrder = 8
end
object chkRST_R: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkRST_S
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 235
Top = 188
Width = 114
BorderSpacing.Top = 3
Caption = 'RST Received'
TabOrder = 9
end
object chkName: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkRST_R
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 267
Top = 214
Width = 65
BorderSpacing.Top = 3
Caption = 'Name'
TabOrder = 10
end
object chkQTH: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkName
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 299
Top = 240
Width = 54
BorderSpacing.Top = 3
Caption = 'QTH'
TabOrder = 11
end
object chkQSL_VIA: TCheckBox
Left = 167
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkDate
Left = 163
Height = 23
Top = 12
Top = 6
Width = 113
BorderSpacing.Left = 145
Caption = 'QSL manager'
TabOrder = 12
end
object chkLoc: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkQSL_VIA
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 43
Top = 32
Width = 74
BorderSpacing.Top = 3
Caption = 'Locator'
TabOrder = 13
end
object chkMyLoc: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkLoc
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 75
Top = 58
Width = 95
BorderSpacing.Top = 3
Caption = 'My locator'
TabOrder = 14
end
object chkIOTA: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkMyLoc
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 107
Top = 84
Width = 56
BorderSpacing.Top = 3
Caption = 'IOTA'
TabOrder = 15
end
object chkAward: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkIOTA
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 139
Top = 110
Width = 66
BorderSpacing.Top = 3
Caption = 'Award'
TabOrder = 16
end
object chkCounty: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkAward
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 171
Top = 136
Width = 72
BorderSpacing.Top = 3
Caption = 'County'
TabOrder = 17
end
object chkPower: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkCounty
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 203
Top = 162
Width = 66
BorderSpacing.Top = 3
Caption = 'Power'
TabOrder = 18
end
object chkDXCC: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkPower
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 235
Top = 188
Width = 62
BorderSpacing.Top = 3
Caption = 'DXCC'
TabOrder = 19
end
object chkRemarks: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkDXCC
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 267
Top = 214
Width = 139
BorderSpacing.Top = 3
Caption = 'Comment to QSO'
TabOrder = 20
end
object chkWAZ: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkRemarks
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 299
Top = 240
Width = 56
BorderSpacing.Top = 3
Caption = 'WAZ'
TabOrder = 21
end
object chkITU: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkWAZ
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 334
Top = 266
Width = 48
BorderSpacing.Top = 3
Caption = 'ITU'
TabOrder = 22
end
object chkState: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkITU
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 366
Top = 292
Width = 60
BorderSpacing.Top = 3
Caption = 'State'
TabOrder = 23
end
object chkLoTWQSLSDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkDate
Left = 308
Height = 23
Top = 12
Top = 6
Width = 159
BorderSpacing.Left = 145
Caption = 'LoTW QSL send date'
TabOrder = 24
end
object chkLoTWQSLRDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLSDate
AnchorSideTop.Control = chkLoTWQSLSDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 43
Top = 32
Width = 184
BorderSpacing.Top = 3
Caption = 'LoTW QSL received date'
TabOrder = 25
end
object chkLoTWQSLS: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLSDate
AnchorSideTop.Control = chkLoTWQSLRDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 75
Top = 58
Width = 123
BorderSpacing.Top = 3
Caption = 'LoTW QSL sent'
TabOrder = 26
end
object chkLoTWQSLR: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLSDate
AnchorSideTop.Control = chkLoTWQSLS
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 107
Top = 84
Width = 151
BorderSpacing.Top = 3
Caption = 'LoTW QSL received'
TabOrder = 27
end
object chkCont: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkLoTWQSLR
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 139
Top = 110
Width = 89
BorderSpacing.Top = 3
Caption = 'Continent'
TabOrder = 28
end
object chkQSLSentDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkCont
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 171
Top = 136
Width = 116
BorderSpacing.Top = 3
Caption = 'QSL sent date'
TabOrder = 29
end
object chkQSLRcvdDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkQSLSentDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 203
Top = 162
Width = 144
BorderSpacing.Top = 3
Caption = 'QSL received date'
TabOrder = 30
end
object chkeQSLSent: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkQSLRcvdDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 235
Top = 188
Width = 91
BorderSpacing.Top = 3
Caption = 'eQSL sent'
TabOrder = 31
end
object chkeQSLSentDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkeQSLSent
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 267
Top = 214
Width = 124
BorderSpacing.Top = 3
Caption = 'eQSL sent date'
TabOrder = 32
end
object chkeQSLRcvd: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkeQSLSentDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 299
Top = 240
Width = 119
BorderSpacing.Top = 3
Caption = 'eQSL received'
TabOrder = 33
end
object chkeQSLRcvdDate: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkeQSLRcvd
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 334
Top = 266
Width = 152
BorderSpacing.Top = 3
Caption = 'eQSL received date'
TabOrder = 34
end
object chkQSLRAll: TCheckBox
Left = 327
AnchorSideLeft.Control = chkLoTWQSLS
AnchorSideTop.Control = chkeQSLRcvdDate
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 366
Top = 292
Width = 195
BorderSpacing.Top = 3
Caption = 'Received QSL,LoTW,eQSL '
TabOrder = 35
end
object Label16: TLabel
Left = 357
AnchorSideLeft.Control = chkLoTWQSLSDate
AnchorSideTop.Control = chkQSLRAll
AnchorSideTop.Side = asrBottom
Left = 329
Height = 17
Top = 392
Top = 315
Width = 169
BorderSpacing.Left = 21
Caption = '(all values in one column)'
ParentColor = False
end
object chkCountry: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkQSL_R
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 395
Top = 318
Width = 118
BorderSpacing.Top = 3
Caption = 'Country name'
TabOrder = 36
end
object chkPropagation: TCheckBox
Left = 14
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkCountry
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 424
Top = 344
Width = 104
BorderSpacing.Top = 3
Caption = 'Propagation'
TabOrder = 37
end
object chkSatellite: TCheckBox
Left = 167
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkState
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 424
Top = 318
Width = 121
BorderSpacing.Top = 3
Caption = 'Satellite name'
TabOrder = 38
end
object chkRXFreq: TCheckBox
Left = 327
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkSatellite
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 424
Top = 344
Width = 113
BorderSpacing.Top = 3
Caption = 'RX frequency'
TabOrder = 39
end
object chkContestName: TCheckBox
AnchorSideLeft.Control = chkLoTWQSLSDate
AnchorSideTop.Control = chkQSLRAll
AnchorSideTop.Side = asrBottom
Left = 308
Height = 23
Top = 344
Width = 117
BorderSpacing.Top = 29
Caption = 'Contest name'
TabOrder = 40
end
object chkSTX: TCheckBox
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkPropagation
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 370
Width = 114
BorderSpacing.Top = 3
Caption = 'SerialNR sent'
TabOrder = 41
end
object chkSRX: TCheckBox
AnchorSideLeft.Control = chkDate
AnchorSideTop.Control = chkSTX
AnchorSideTop.Side = asrBottom
Left = 18
Height = 23
Top = 396
Width = 114
BorderSpacing.Top = 3
Caption = 'SerialNR rcvd'
TabOrder = 42
end
object chkSTX_str: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkRXFreq
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 370
Width = 118
BorderSpacing.Top = 3
Caption = 'ContMSG sent'
TabOrder = 43
end
object chkSRX_str: TCheckBox
AnchorSideLeft.Control = chkQSL_VIA
AnchorSideTop.Control = chkSTX_str
AnchorSideTop.Side = asrBottom
Left = 163
Height = 23
Top = 396
Width = 118
BorderSpacing.Top = 3
Caption = 'ContMSG rcvd'
TabOrder = 44
end
end
object tabBands: TTabSheet
Caption = 'Bands'
@ -3327,57 +3549,45 @@ object frmPreferences: TfrmPreferences
DesignLeft = 623
DesignTop = 214
inherited chkProfile: TCheckBox
Height = 23
Top = 326
Width = 67
end
inherited chkAscTime: TCheckBox
Left = 8
Height = 23
Top = 448
Width = 197
end
inherited chkExCont: TCheckBox
Height = 23
Width = 89
end
inherited chkexQTH: TCheckBox
Height = 23
Width = 54
end
inherited chkexName: TCheckBox
Height = 23
Width = 65
end
inherited chkexRSTR: TCheckBox
Height = 23
Width = 83
end
inherited chkexRSTS: TCheckBox
Height = 23
Width = 83
end
inherited chkexFreq: TCheckBox
Height = 23
Width = 54
end
inherited chkexMode: TCheckBox
Height = 23
Width = 62
end
inherited chkexCall: TCheckBox
Height = 23
Width = 51
end
inherited chkexTimeoff: TCheckBox
Height = 23
Width = 80
end
inherited chkexTimeon: TCheckBox
Height = 23
Width = 79
end
inherited chkexDate: TCheckBox
Height = 23
Width = 57
end
inherited edtWDate: TEdit
@ -3411,65 +3621,60 @@ object frmPreferences: TfrmPreferences
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
Height = 23
Width = 83
end
inherited chkexQSLR: TCheckBox
Height = 23
Width = 111
end
inherited chkexQSLVIA: TCheckBox
Height = 23
Width = 113
end
inherited chkexLoc: TCheckBox
Height = 23
Width = 74
end
inherited chkexMyLoc: TCheckBox
Height = 23
Width = 95
end
inherited chkexIOTA: TCheckBox
Height = 23
Width = 56
end
inherited chkexAward: TCheckBox
Height = 23
Width = 66
end
inherited chkexCounty: TCheckBox
Height = 23
Width = 72
end
inherited chkexPower: TCheckBox
Height = 23
Width = 66
end
inherited chkexDXCC: TCheckBox
Height = 23
Width = 62
end
inherited chkexRemarks: TCheckBox
Height = 23
Width = 83
end
inherited edtWRemarks: TEdit
@ -3506,58 +3711,45 @@ object frmPreferences: TfrmPreferences
Height = 34
end
inherited chkexeQSLRDate: TCheckBox
Height = 23
Width = 130
end
inherited chkexeQSLR: TCheckBox
Height = 23
Width = 120
end
inherited chkexeQSLSDate: TCheckBox
Height = 23
Width = 129
end
inherited chkexeQSLS: TCheckBox
Height = 23
Width = 120
end
inherited chkexQSLRDate: TCheckBox
Height = 23
Width = 116
end
inherited chkexQSLSDate: TCheckBox
Height = 23
Width = 116
end
inherited chkexLQSLRDate: TCheckBox
Height = 23
Width = 133
end
inherited chkexLQSLR: TCheckBox
Height = 23
Width = 123
end
inherited chkexLQSLSDate: TCheckBox
Height = 23
Width = 132
end
inherited chkexLQSLS: TCheckBox
Height = 23
Width = 123
end
inherited chkexState: TCheckBox
Height = 23
Width = 60
end
inherited chkexNote: TCheckBox
Height = 23
Width = 57
end
inherited chkexITU: TCheckBox
Height = 23
Width = 48
end
inherited chkexWAZ: TCheckBox
Height = 23
Width = 56
end
inherited edtWWAZ: TEdit
@ -3603,15 +3795,12 @@ object frmPreferences: TfrmPreferences
Height = 34
end
inherited chkExPropagation: TCheckBox
Height = 23
Width = 104
end
inherited chkExSat: TCheckBox
Height = 23
Width = 121
end
inherited chkExRXFreq: TCheckBox
Height = 23
Width = 113
end
inherited edtWProp: TEdit
@ -3623,6 +3812,9 @@ object frmPreferences: TfrmPreferences
inherited edtWRxFreq: TEdit
Height = 34
end
inherited chkexContest: TCheckBox
Width = 76
end
end
end
object tabDXCluster: TTabSheet
@ -6701,7 +6893,7 @@ object frmPreferences: TfrmPreferences
Height = 370
Top = 8
Width = 608
ClientHeight = 368
ClientHeight = 352
ClientWidth = 606
TabOrder = 0
object Label93: TLabel
@ -7680,8 +7872,6 @@ object frmPreferences: TfrmPreferences
top = 208
end
object dlgColor: TColorDialog
Width = 565
Height = 295
Color = clBlack
CustomColors.Strings = (
'ColorA=000000'

View File

@ -120,6 +120,11 @@ type
cb60m: TCheckBox;
cb30cm: TCheckBox;
cgLimit: TCheckGroup;
chkSTX: TCheckBox;
chkSRX: TCheckBox;
chkSTX_str: TCheckBox;
chkSRX_str: TCheckBox;
chkContestName: TCheckBox;
chkShowB4call: TCheckBox;
chkRXFreq : TCheckBox;
chkSatellite : TCheckBox;
@ -1183,6 +1188,11 @@ begin
cqrini.WriteBool('Columns', 'Propagation', chkPropagation.Checked);
cqrini.WriteBool('Columns', 'SatelliteName', chkSatellite.Checked);
cqrini.WriteBool('Columns', 'RXFreq', chkRXFreq.Checked);
cqrini.WriteBool('Columns', 'ContestName', chkContestName.Checked);
cqrini.WriteBool('Columns', 'STX', chkSTX.Checked);
cqrini.WriteBool('Columns', 'SRX', chkSRX.Checked);
cqrini.WriteBool('Columns', 'ContMsgSent', chkSTX_str.Checked);
cqrini.WriteBool('Columns', 'ContMsgRcvd', chkSRX_str.Checked);
cqrini.WriteBool('Bands', '137kHz', cb136kHz.Checked);
cqrini.WriteBool('Bands', '472kHz', cb472kHz.Checked);
@ -2533,6 +2543,11 @@ begin
chkPropagation.Checked := cqrini.ReadBool('Columns', 'Propagation', False);
chkSatellite.Checked := cqrini.ReadBool('Columns', 'SatelliteName', False);
chkRXFreq.Checked := cqrini.ReadBool('Columns', 'RXFreq', False);
chkContestName.Checked := cqrini.ReadBool('Columns', 'ContestName', False);
chkSTX.Checked := cqrini.ReadBool('Columns', 'STX', False);
chkSRX.Checked := cqrini.ReadBool('Columns', 'SRX', False);
chkSTX_str.Checked := cqrini.ReadBool('Columns', 'ContMsgSent', False);
chkSRX_str.Checked := cqrini.ReadBool('Columns', 'ContMsgRcvd', False);
cb136kHz.Checked := cqrini.ReadBool('Bands', '137kHz', False);
cb472kHz.Checked := cqrini.ReadBool('Bands', '472kHz', False);

View File

@ -1,7 +1,7 @@
object frmSQLConsole: TfrmSQLConsole
Left = 423
Left = 122
Height = 455
Top = 229
Top = 250
Width = 660
HelpType = htKeyword
HelpKeyword = 'help/h27.html'
@ -12,7 +12,7 @@ object frmSQLConsole: TfrmSQLConsole
OnClose = FormClose
OnShow = FormShow
ShowHint = True
LCLVersion = '0.9.30.2'
LCLVersion = '2.0.0.4'
inline mSQL: TSynMemo
Cursor = crIBeam
Left = 0
@ -31,26 +31,13 @@ object frmSQLConsole: TfrmSQLConsole
Gutter.Width = 57
Gutter.MouseActions = <
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 13
MoveCaret = False
Option = 0
Priority = 0
Command = emcOnMainGutterClick
end
item
Shift = []
ShiftMask = []
Button = mbRight
ClickCount = ccSingle
ClickDir = cdUp
Command = 12
MoveCaret = False
Option = 0
Priority = 0
Command = emcContextMenu
end>
Highlighter = SynSQLSyn1
Keystrokes = <
@ -476,134 +463,89 @@ object frmSQLConsole: TfrmSQLConsole
end>
MouseActions = <
item
Shift = []
ShiftMask = [ssShift, ssAlt]
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdDown
Command = 1
Command = emcStartSelections
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = [ssShift]
ShiftMask = [ssShift, ssAlt]
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdDown
Command = 1
Command = emcStartSelections
MoveCaret = True
Option = 1
Priority = 0
end
item
Shift = [ssAlt]
ShiftMask = [ssShift, ssAlt]
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdDown
Command = 3
Command = emcStartColumnSelections
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = [ssShift, ssAlt]
ShiftMask = [ssShift, ssAlt]
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdDown
Command = 3
Command = emcStartColumnSelections
MoveCaret = True
Option = 1
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbRight
ClickCount = ccSingle
ClickDir = cdUp
Command = 12
MoveCaret = False
Option = 0
Priority = 0
Command = emcContextMenu
end
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccDouble
ClickDir = cdDown
Command = 6
Command = emcSelectWord
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccTriple
ClickDir = cdDown
Command = 7
Command = emcSelectLine
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccQuad
ClickDir = cdDown
Command = 8
Command = emcSelectPara
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbMiddle
ClickCount = ccSingle
ClickDir = cdDown
Command = 10
Command = emcPasteSelection
MoveCaret = True
Option = 0
Priority = 0
end
item
Shift = [ssCtrl]
ShiftMask = [ssShift, ssAlt, ssCtrl]
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdUp
Command = 11
MoveCaret = False
Option = 0
Priority = 0
Command = emcMouseLink
end>
MouseTextActions = <>
MouseSelActions = <
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccSingle
ClickDir = cdDown
Command = 9
MoveCaret = False
Option = 0
Priority = 0
Command = emcStartDragMove
end>
Lines.Strings = (
''
)
VisibleSpecialChars = [vscSpace, vscTabAtLast]
RightEdge = 0
SelectedColor.BackPriority = 50
SelectedColor.ForePriority = 50
SelectedColor.FramePriority = 50
SelectedColor.BoldPriority = 50
SelectedColor.ItalicPriority = 50
SelectedColor.UnderlinePriority = 50
SelectedColor.StrikeOutPriority = 50
inline TSynGutterPartList
object TSynGutterMarks
Width = 24
MouseActions = <>
end
object TSynGutterLineNumber
Width = 17
@ -617,35 +559,28 @@ object frmSQLConsole: TfrmSQLConsole
end
object TSynGutterChanges
Width = 4
MouseActions = <>
ModifiedColor = 59900
SavedColor = clGreen
end
object TSynGutterSeparator
Width = 2
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object TSynGutterCodeFolding
MouseActions = <
item
Shift = []
ShiftMask = []
Button = mbRight
ClickCount = ccSingle
ClickDir = cdUp
Command = 16
MoveCaret = False
Option = 0
Priority = 0
Command = emcCodeFoldContextMenu
end
item
Shift = []
ShiftMask = [ssShift]
Button = mbMiddle
ClickCount = ccAny
ClickDir = cdDown
Command = 14
MoveCaret = False
Option = 0
Priority = 0
Command = emcCodeFoldCollaps
end
item
Shift = [ssShift]
@ -653,58 +588,36 @@ object frmSQLConsole: TfrmSQLConsole
Button = mbMiddle
ClickCount = ccAny
ClickDir = cdDown
Command = 14
MoveCaret = False
Command = emcCodeFoldCollaps
Option = 1
Priority = 0
end
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 0
MoveCaret = False
Option = 0
Priority = 0
Command = emcNone
end>
MarkupInfo.Background = clNone
MarkupInfo.Foreground = clGray
MouseActionsExpanded = <
item
Shift = []
ShiftMask = []
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 14
MoveCaret = False
Option = 0
Priority = 0
Command = emcCodeFoldCollaps
end>
MouseActionsCollapsed = <
item
Shift = [ssCtrl]
ShiftMask = [ssCtrl]
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 15
MoveCaret = False
Option = 0
Priority = 0
Command = emcCodeFoldExpand
end
item
Shift = []
ShiftMask = [ssCtrl]
Button = mbLeft
ClickCount = ccAny
ClickDir = cdDown
Command = 15
MoveCaret = False
Command = emcCodeFoldExpand
Option = 1
Priority = 0
end>
end
end
@ -718,6 +631,7 @@ object frmSQLConsole: TfrmSQLConsole
Color = clWindow
Columns = <>
DataSource = dsrSQL
Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgAutoSizeColumns]
ReadOnly = True
TabOrder = 1
TitleStyle = tsNative
@ -737,8 +651,8 @@ object frmSQLConsole: TfrmSQLConsole
end
object ToolButton2: TToolButton
Left = 24
Height = 22
Top = 2
Width = 8
Caption = 'ToolButton2'
Style = tbsSeparator
end
@ -754,8 +668,8 @@ object frmSQLConsole: TfrmSQLConsole
end
object ToolButton5: TToolButton
Left = 78
Height = 22
Top = 2
Width = 8
Caption = 'ToolButton5'
Style = tbsSeparator
end
@ -771,8 +685,8 @@ object frmSQLConsole: TfrmSQLConsole
end
object ToolButton8: TToolButton
Left = 132
Height = 22
Top = 2
Width = 8
Caption = 'ToolButton8'
Style = tbsSeparator
end
@ -783,8 +697,8 @@ object frmSQLConsole: TfrmSQLConsole
end
object ToolButton10: TToolButton
Left = 163
Height = 22
Top = 2
Width = 8
Caption = 'ToolButton10'
Style = tbsSeparator
end
@ -835,26 +749,11 @@ object frmSQLConsole: TfrmSQLConsole
object SynSQLSyn1: TSynSQLSyn
DefaultFilter = 'SQL Files (*.sql)|*.sql'
Enabled = False
CommentAttri.FrameEdges = sfeAround
DataTypeAttri.FrameEdges = sfeAround
DefaultPackageAttri.FrameEdges = sfeAround
ExceptionAttri.FrameEdges = sfeAround
FunctionAttri.FrameEdges = sfeAround
IdentifierAttri.FrameEdges = sfeAround
KeyAttri.FrameEdges = sfeAround
NumberAttri.FrameEdges = sfeAround
PLSQLAttri.FrameEdges = sfeAround
SpaceAttri.FrameEdges = sfeAround
SQLPlusAttri.FrameEdges = sfeAround
StringAttri.FrameEdges = sfeAround
SymbolAttri.FrameEdges = sfeAround
TableNameAttri.FrameEdges = sfeAround
VariableAttri.FrameEdges = sfeAround
SQLDialect = sqlInterbase6
left = 392
top = 56
end
object dsrSQL: TDatasource
object dsrSQL: TDataSource
DataSet = dmData.qSQLConsole
left = 400
top = 288
@ -1139,8 +1038,9 @@ object frmSQLConsole: TfrmSQLConsole
end
object SynAutoComplete1: TSynAutoComplete
EndOfTokenChr = '()[].'
Editor = mSQL
ShortCut = 8224
ExecCommandID = ecSynAutoCompletionExecute
Editor = mSQL
left = 536
top = 56
end

View File

@ -105,13 +105,15 @@ end;
procedure TfraCWKeys.btnF1MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F1',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF10MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F10',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF10MouseLeave(Sender: TObject);
@ -127,7 +129,8 @@ end;
procedure TfraCWKeys.btnF2MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F2',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF2MouseLeave(Sender: TObject);
@ -138,7 +141,8 @@ end;
procedure TfraCWKeys.btnF3MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F3',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF3MouseLeave(Sender: TObject);
@ -149,7 +153,8 @@ end;
procedure TfraCWKeys.btnF4MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F4',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF4MouseLeave(Sender: TObject);
@ -160,7 +165,8 @@ end;
procedure TfraCWKeys.btnF5MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F5',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF5MouseLeave(Sender: TObject);
@ -171,7 +177,8 @@ end;
procedure TfraCWKeys.btnF6MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F6',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF6MouseLeave(Sender: TObject);
@ -182,7 +189,8 @@ end;
procedure TfraCWKeys.btnF7MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F7',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF7MouseLeave(Sender: TObject);
@ -193,7 +201,8 @@ end;
procedure TfraCWKeys.btnF8MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F8',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF8MouseLeave(Sender: TObject);
@ -204,7 +213,8 @@ end;
procedure TfraCWKeys.btnF9MouseEnter(Sender: TObject);
begin
self.lblToShowMouseOverTextCwKeys.Caption:=dmUtils.GetCWMessage('F9',frmNewQSO.edtCall.Text,
frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
frmNewQSO.edtHisRST.Text, frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,'');
end;
procedure TfraCWKeys.btnF9MouseLeave(Sender: TObject);
@ -274,8 +284,9 @@ begin
frmNewQSO.RunVK(cwkey)
else
if Assigned(frmNewQSO.CWint) then
// works with contest addition - frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(cwkey,frmNewQSO.edtCall.Text,frmNewQSO.edtHisRST.Text,frmNewQSO.edtHisRSTstx.Text,frmNewQSO.edtHisRSTstxAdd.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(cwkey,frmNewQSO.edtCall.Text,frmNewQSO.edtHisRST.Text,frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''))
frmNewQSO.CWint.SendText(dmUtils.GetCWMessage(cwkey,frmNewQSO.edtCall.Text,frmNewQSO.edtHisRST.Text,
frmNewQSO.edtContestSerialSent.Text,frmNewQSO.edtContestExchangeMessageSent.Text,
frmNewQSO.edtName.Text,frmNewQSO.lblGreeting.Caption,''));
end;
end;
end;

View File

@ -6,115 +6,115 @@ object fraExportPref: TfraExportPref
ClientHeight = 480
ClientWidth = 595
TabOrder = 0
DesignLeft = 590
DesignTop = 201
DesignLeft = 87
DesignTop = 319
object chkProfile: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 324
Width = 72
Width = 63
Caption = 'Profile'
TabOrder = 0
end
object chkAscTime: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 440
Width = 207
Width = 185
Caption = 'Most recent entries on top'
TabOrder = 72
end
object chkExCont: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 296
Width = 95
Width = 85
Caption = 'Continent'
TabOrder = 1
end
object chkexQTH: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 270
Width = 57
Width = 51
Caption = 'QTH'
TabOrder = 2
end
object chkexName: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 243
Width = 66
Width = 61
Caption = 'Name'
TabOrder = 3
end
object chkexRSTR: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 217
Width = 84
Width = 80
Caption = 'RST rcvd'
TabOrder = 4
end
object chkexRSTS: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 191
Width = 84
Width = 79
Caption = 'RST sent'
TabOrder = 5
end
object chkexFreq: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 165
Width = 57
Width = 52
Caption = 'Freq'
TabOrder = 6
end
object chkexMode: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 139
Width = 65
Width = 58
Caption = 'Mode'
TabOrder = 7
end
object chkexCall: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 114
Width = 51
Width = 47
Caption = 'Call'
TabOrder = 8
end
object chkexTimeoff: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 89
Width = 83
Width = 74
Caption = 'Time off'
TabOrder = 9
end
object chkexTimeon: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 64
Width = 80
Width = 74
Caption = 'Time on'
TabOrder = 10
end
object chkexDate: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 38
Width = 59
Width = 54
Caption = 'Date'
TabOrder = 11
end
object edtWDate: TEdit
Left = 110
Height = 27
Height = 32
Top = 37
Width = 40
TabOrder = 12
@ -122,7 +122,7 @@ object fraExportPref: TfraExportPref
end
object edtWTimeOn: TEdit
Left = 110
Height = 27
Height = 32
Top = 64
Width = 40
TabOrder = 13
@ -130,7 +130,7 @@ object fraExportPref: TfraExportPref
end
object edtWTimeOff: TEdit
Left = 110
Height = 27
Height = 32
Top = 88
Width = 40
TabOrder = 14
@ -138,7 +138,7 @@ object fraExportPref: TfraExportPref
end
object edtWCall: TEdit
Left = 110
Height = 27
Height = 32
Top = 113
Width = 40
TabOrder = 15
@ -146,7 +146,7 @@ object fraExportPref: TfraExportPref
end
object edtWMode: TEdit
Left = 110
Height = 27
Height = 32
Top = 139
Width = 40
TabOrder = 16
@ -154,7 +154,7 @@ object fraExportPref: TfraExportPref
end
object edtWFreq: TEdit
Left = 110
Height = 27
Height = 32
Top = 166
Width = 40
TabOrder = 17
@ -162,7 +162,7 @@ object fraExportPref: TfraExportPref
end
object edtWRstS: TEdit
Left = 110
Height = 27
Height = 32
Top = 190
Width = 40
TabOrder = 18
@ -170,7 +170,7 @@ object fraExportPref: TfraExportPref
end
object edtWRstR: TEdit
Left = 110
Height = 27
Height = 32
Top = 217
Width = 40
TabOrder = 19
@ -178,7 +178,7 @@ object fraExportPref: TfraExportPref
end
object edtWName: TEdit
Left = 110
Height = 27
Height = 32
Top = 243
Width = 40
TabOrder = 20
@ -186,7 +186,7 @@ object fraExportPref: TfraExportPref
end
object edtWQTH: TEdit
Left = 110
Height = 27
Height = 32
Top = 269
Width = 40
TabOrder = 21
@ -194,143 +194,143 @@ object fraExportPref: TfraExportPref
end
object Label46: TLabel
Left = 6
Height = 17
Height = 15
Top = 12
Width = 33
Width = 27
Caption = 'Field'
ParentColor = False
end
object Label49: TLabel
Left = 110
Height = 17
Height = 15
Top = 12
Width = 42
Width = 36
Caption = 'Width'
ParentColor = False
end
object Label47: TLabel
Left = 174
Height = 17
Height = 15
Top = 12
Width = 33
Width = 27
Caption = 'Field'
ParentColor = False
end
object Label50: TLabel
Left = 302
Height = 17
Height = 15
Top = 12
Width = 42
Width = 36
Caption = 'Width'
ParentColor = False
end
object Label48: TLabel
Left = 366
Height = 17
Height = 15
Top = 12
Width = 33
Width = 27
Caption = 'Field'
ParentColor = False
end
object Label51: TLabel
Left = 528
Height = 17
Height = 15
Top = 12
Width = 42
Width = 36
Caption = 'Width'
ParentColor = False
end
object chkexQSLS: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 39
Width = 87
Width = 80
Caption = 'QSL sent'
TabOrder = 22
end
object chkexQSLR: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 64
Width = 115
Width = 105
Caption = 'QSL received'
TabOrder = 23
end
object chkexQSLVIA: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 89
Width = 118
Width = 108
Caption = 'QSL manager'
TabOrder = 24
end
object chkexLoc: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 114
Width = 79
Width = 71
Caption = 'Locator'
TabOrder = 25
end
object chkexMyLoc: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 139
Width = 98
Width = 88
Caption = 'My locator'
TabOrder = 26
end
object chkexIOTA: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 166
Width = 59
Width = 53
Caption = 'IOTA'
TabOrder = 27
end
object chkexAward: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 192
Width = 71
Width = 64
Caption = 'Award'
TabOrder = 28
end
object chkexCounty: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 217
Width = 75
Width = 69
Caption = 'County'
TabOrder = 29
end
object chkexPower: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 243
Width = 70
Width = 62
Caption = 'Power'
TabOrder = 30
end
object chkexDXCC: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 270
Width = 64
Width = 58
Caption = 'DXCC'
TabOrder = 31
end
object chkexRemarks: TCheckBox
Left = 174
Height = 24
Height = 23
Top = 297
Width = 85
Width = 77
Caption = 'Remarks'
TabOrder = 32
end
object edtWRemarks: TEdit
Left = 302
Height = 27
Height = 32
Top = 296
Width = 40
TabOrder = 33
@ -338,7 +338,7 @@ object fraExportPref: TfraExportPref
end
object edtWDXCC: TEdit
Left = 302
Height = 27
Height = 32
Top = 270
Width = 40
TabOrder = 34
@ -346,7 +346,7 @@ object fraExportPref: TfraExportPref
end
object edtWPower: TEdit
Left = 302
Height = 27
Height = 32
Top = 243
Width = 40
TabOrder = 35
@ -354,7 +354,7 @@ object fraExportPref: TfraExportPref
end
object edtWCounty: TEdit
Left = 302
Height = 27
Height = 32
Top = 217
Width = 40
TabOrder = 36
@ -362,7 +362,7 @@ object fraExportPref: TfraExportPref
end
object edtWAward: TEdit
Left = 302
Height = 27
Height = 32
Top = 191
Width = 40
TabOrder = 37
@ -370,7 +370,7 @@ object fraExportPref: TfraExportPref
end
object edtWIOTA: TEdit
Left = 302
Height = 27
Height = 32
Top = 165
Width = 40
TabOrder = 38
@ -378,7 +378,7 @@ object fraExportPref: TfraExportPref
end
object edtWMyLoc: TEdit
Left = 302
Height = 27
Height = 32
Top = 139
Width = 40
TabOrder = 39
@ -386,7 +386,7 @@ object fraExportPref: TfraExportPref
end
object edtWLoc: TEdit
Left = 302
Height = 27
Height = 32
Top = 114
Width = 40
TabOrder = 40
@ -394,7 +394,7 @@ object fraExportPref: TfraExportPref
end
object edtWQSLVIA: TEdit
Left = 302
Height = 27
Height = 32
Top = 89
Width = 40
TabOrder = 41
@ -402,7 +402,7 @@ object fraExportPref: TfraExportPref
end
object edtWQSLR: TEdit
Left = 302
Height = 27
Height = 32
Top = 64
Width = 40
TabOrder = 42
@ -410,7 +410,7 @@ object fraExportPref: TfraExportPref
end
object edtWQSLS: TEdit
Left = 302
Height = 27
Height = 32
Top = 38
Width = 40
TabOrder = 43
@ -418,119 +418,119 @@ object fraExportPref: TfraExportPref
end
object chkexeQSLRDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 376
Width = 136
Width = 124
Caption = 'eQSL QSLR date'
TabOrder = 44
end
object chkexeQSLR: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 350
Width = 126
Width = 116
Caption = 'eQSL QSL rcvd'
TabOrder = 45
end
object chkexeQSLSDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 324
Width = 135
Width = 124
Caption = 'eQSL QSLS date'
TabOrder = 46
end
object chkexeQSLS: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 298
Width = 126
Width = 115
Caption = 'eQSL QSL sent'
TabOrder = 47
end
object chkexQSLRDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 271
Width = 121
Width = 112
Caption = 'QSL rcvd date'
TabOrder = 48
end
object chkexQSLSDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 244
Width = 121
Width = 111
Caption = 'QSL sent date'
TabOrder = 49
end
object chkexLQSLRDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 218
Width = 139
Width = 126
Caption = 'LoTW QSLR date'
TabOrder = 50
end
object chkexLQSLR: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 192
Width = 129
Width = 118
Caption = 'LoTW QSL rcvd'
TabOrder = 51
end
object chkexLQSLSDate: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 166
Width = 138
Width = 126
Caption = 'LoTW QSLS date'
TabOrder = 52
end
object chkexLQSLS: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 140
Width = 129
Width = 117
Caption = 'LoTW QSL sent'
TabOrder = 53
end
object chkexState: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 115
Width = 62
Width = 58
Caption = 'State'
TabOrder = 54
end
object chkexNote: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 89
Width = 60
Width = 54
Caption = 'Note'
TabOrder = 55
end
object chkexITU: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 64
Width = 48
Width = 46
Caption = 'ITU'
TabOrder = 56
end
object chkexWAZ: TCheckBox
Left = 368
Height = 24
Height = 23
Top = 39
Width = 59
Width = 53
Caption = 'WAZ'
TabOrder = 57
end
object edtWWAZ: TEdit
Left = 530
Height = 27
Height = 32
Top = 38
Width = 40
TabOrder = 58
@ -538,7 +538,7 @@ object fraExportPref: TfraExportPref
end
object edtWITU: TEdit
Left = 530
Height = 27
Height = 32
Top = 63
Width = 40
TabOrder = 59
@ -546,7 +546,7 @@ object fraExportPref: TfraExportPref
end
object edtWNote: TEdit
Left = 530
Height = 27
Height = 32
Top = 88
Width = 40
TabOrder = 60
@ -554,7 +554,7 @@ object fraExportPref: TfraExportPref
end
object edtWState: TEdit
Left = 530
Height = 27
Height = 32
Top = 113
Width = 40
TabOrder = 61
@ -562,7 +562,7 @@ object fraExportPref: TfraExportPref
end
object edtWLQSLS: TEdit
Left = 530
Height = 27
Height = 32
Top = 139
Width = 40
TabOrder = 62
@ -570,7 +570,7 @@ object fraExportPref: TfraExportPref
end
object edtWLQSLSDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 165
Width = 40
TabOrder = 63
@ -578,7 +578,7 @@ object fraExportPref: TfraExportPref
end
object edtWLQSLR: TEdit
Left = 530
Height = 27
Height = 32
Top = 191
Width = 40
TabOrder = 64
@ -586,7 +586,7 @@ object fraExportPref: TfraExportPref
end
object edtWLQSLRDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 217
Width = 40
TabOrder = 65
@ -594,7 +594,7 @@ object fraExportPref: TfraExportPref
end
object edtWQSLSDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 243
Width = 40
TabOrder = 66
@ -602,7 +602,7 @@ object fraExportPref: TfraExportPref
end
object edtWQSLRDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 270
Width = 40
TabOrder = 67
@ -610,7 +610,7 @@ object fraExportPref: TfraExportPref
end
object edtWeQSLS: TEdit
Left = 530
Height = 27
Height = 32
Top = 297
Width = 40
TabOrder = 68
@ -618,7 +618,7 @@ object fraExportPref: TfraExportPref
end
object edtWeQSLSDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 323
Width = 40
TabOrder = 69
@ -626,7 +626,7 @@ object fraExportPref: TfraExportPref
end
object edtWeQSLR: TEdit
Left = 530
Height = 27
Height = 32
Top = 349
Width = 40
TabOrder = 70
@ -634,7 +634,7 @@ object fraExportPref: TfraExportPref
end
object edtWeQSLRDate: TEdit
Left = 530
Height = 27
Height = 32
Top = 375
Width = 40
TabOrder = 71
@ -642,31 +642,31 @@ object fraExportPref: TfraExportPref
end
object chkExPropagation: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 350
Width = 112
Width = 98
Caption = 'Propagation'
TabOrder = 73
end
object chkExSat: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 378
Width = 123
Width = 112
Caption = 'Satellite name'
TabOrder = 74
end
object chkExRXFreq: TCheckBox
Left = 6
Height = 24
Height = 23
Top = 410
Width = 116
Width = 107
Caption = 'RX frequency'
TabOrder = 75
end
object edtWProp: TEdit
Left = 160
Height = 27
Height = 32
Top = 349
Width = 40
TabOrder = 76
@ -674,7 +674,7 @@ object fraExportPref: TfraExportPref
end
object edtWSatName: TEdit
Left = 160
Height = 27
Height = 32
Top = 377
Width = 40
TabOrder = 77
@ -682,10 +682,21 @@ object fraExportPref: TfraExportPref
end
object edtWRxFreq: TEdit
Left = 160
Height = 27
Height = 32
Top = 407
Width = 40
TabOrder = 78
Text = '50'
end
object chkexContest: TCheckBox
Left = 174
Height = 23
Hint = 'ADIF Fields SRX, STX, SRX_STRING, STX_STRING AND CONTEST_ID'
Top = 324
Width = 72
Caption = 'Contest'
ParentShowHint = False
ShowHint = True
TabOrder = 79
end
end

View File

@ -12,6 +12,7 @@ type
{ TfraExportPref }
TfraExportPref = class(TFrame)
chkexContest: TCheckBox;
chkExRXFreq : TCheckBox;
chkExSat : TCheckBox;
chkExPropagation : TCheckBox;
@ -152,6 +153,7 @@ 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.WriteString('Export', 'WDate', edtWDate.Text);
cqrini.WriteString('Export', 'Wtime_on', edtWTimeOn.Text);
@ -236,6 +238,7 @@ 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);
edtWDate.Text := cqrini.ReadString('Export', 'WDate', '50');

View File

@ -35,6 +35,7 @@ const h_SRX = 6056;
const h_SRX_STRING = 59227;
const h_STX = 6072;
const h_STX_STRING = 61787;
const h_CONTEST_ID = 33914;
const h_TIME_OFF = 39033;
const h_TIME_ON = 62223;
const h_TX_PWR = 21722;

View File

@ -768,36 +768,41 @@ begin
//not implemented in hamlib command set
//sending 0xFF as text works with Icom
tcp.SendMessage('b'+#$0FF+LineEnding);
//All chrs are spaces stops cw for kenwood (by ts480 manual, not tested)
tcp.SendMessage('b'+' '+LineEnding);
//All chrs are spaces stops cw for kenwood. Empty chrs (max24) in buffer are filled with spaces.
// (info by ts480 manual, not tested)
tcp.SendMessage('b '+LineEnding);
end;
procedure TCWHamLib.SendText(text : String);
var c:integer;
begin
c:= length(text);
if c>10 then
Begin
//different rigs support different length of b-command. 10chr should be safe for all
repeat
Begin
Rmsg :='';
tcp.SendMessage('b'+copy(text,1,10)+LineEnding);
if fDebugMode then
if text<>'' then
begin
c:= length(text);
if c>10 then
Begin
Writeln('Sending HL-block:',copy(text,1,10));
//different rigs support different length of b-command. 10chr should be safe for all
repeat
Begin
Rmsg :='';
tcp.SendMessage('b'+copy(text,1,10)+LineEnding);
if fDebugMode then
Begin
Writeln('Sending HL-block:',copy(text,1,10));
end;
text := copy(text,11,length(text));
c:= length(text);
end;
until c=0;
end
else
Begin
tcp.SendMessage('b'+text+LineEnding);
if fDebugMode then Writeln('Sending HL-message:','b'+text+LineEnding);
end;
text := copy(text,11,length(text));
c:= length(text);
end;
until c=0;
end
else
Begin
tcp.SendMessage('b'+text+LineEnding);
if fDebugMode then Writeln('Sending HL-message:',text);
end;
end
else if fDebugMode then Writeln('Empty message!');
end;
procedure TCWHamLib.Close;