mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-21 10:27:17 +00:00
This adds support for (tempoarily) setting an operator callsign
via ALT+O. This is stored in a separate table column if it differs from the configured station callsign. I is exported to ADIF and cbr/edi files. Squashed commit of the following: commit 4d9302d89ebc8d5f4f3fb0c891283310c9391e60 Author: phl0 <florian@florian-wolters.de> Date: Thu Sep 10 02:03:51 2020 +0200 operator support for cabrillo exports commit ffed1b5a7cd61147305ee0afd15db4e0ce80f752 Author: phl0 <florian@florian-wolters.de> Date: Thu Sep 10 01:31:42 2020 +0200 Add operators to edi exports commit 56ab0e5f36dfff54a8ffae05565344cb8fb717d5 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 9 16:36:06 2020 +0200 Retain operator call on QSO edit commit db6d23109834c8258fa87e418c004dcb253e2235 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 9 16:26:31 2020 +0200 Add ADIF import functions for operator call commit 9fa74745c564cf9215fd8878419b2c1042b5c1a5 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 9 16:07:43 2020 +0200 Add export functions for operator callsign commit c04387a4f2d0ce014aac1b1b137f2f80ecb190d7 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 9 15:46:38 2020 +0200 Store Op only if different from configured callsign commit b00e6ae48dcba47a9db071d7ffb5c52885672ad0 Merge: 11d851ed99e17f
Author: phl0 <florian@florian-wolters.de> Date: Tue Sep 8 12:21:13 2020 +0200 Merge remote-tracking branch 'upstream/master' into operator commit 11d851e7c66b9f3d91289ced4a5b0d6d857ab2e8 Merge: 7e803902d4445b
Author: phl0 <florian@florian-wolters.de> Date: Mon Sep 7 12:22:26 2020 +0200 Merge remote-tracking branch 'upstream/master' into operator commit 7e803907de50a5c3b774e31f63ce9ecf34696c4d Author: Florian Wolters <florian@florian-wolters.de> Date: Sun Sep 6 10:55:47 2020 +0200 Update documentation commit 6d0dbfc2e8889b4a65b1675ea2bebdc53a7ec252 Author: phl0 <florian@florian-wolters.de> Date: Fri Sep 4 10:47:08 2020 +0200 Slight formatting stuff commit 620b1713ab33884a0291198d26484612bd195a95 Author: OH1KH <oh1kh@sral.fi> Date: Thu Sep 3 17:01:10 2020 +0300 additions 2 - N1MM now gets "operator" with same rules as wsjt-x - change loc (6) and change operator (20) now has input limit - fChangeOperator should be now part of project (diff shows not..will check after commit) - cabrillo export now has header "OPERATORS:" by cabrillo definitions it can show operators and host: OPERATORS: OH1KH,@OH1KH (when no operator defined) OPERATORS: OH1KJ,@OH1KH OPERATORS: OH1KH,OH1KJ,@OH1KH The last case must be mentioned in HELP that operator (Alt+O) input can be more than one callsign by comma separated (in limit of 20 char). commit ffd3ba2f0bceeccf2e8a4b8ad7be9c66a2209893 Author: OH1KH <oh1kh@sral.fi> Date: Thu Sep 3 12:03:59 2020 +0300 Some additions - fixed status line sizes: shorter text for My grid and ref.call - added Operator to status line - shows up if different than station call - if changed to empty input replaces station call to be also operator - wsjtx logging "operator" sets cqrlog operator but only if previous value was station call. - fixed ctrl+l (myLoc) has now input validate. Allows just 6 char input now commit 7f6db3909ecbe3c5dc397196309c0605806b0f0b Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 2 13:31:02 2020 +0200 Add forgotten files ... :/ commit f0b1c7b94f9bf8e43005b19c5dcde18c9f5d9081 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 2 13:30:06 2020 +0200 Add Operator short cut/ popup to save and Edit QSO functions commit 9de6a7447293813840029e93c98ba4da844b10b5 Author: phl0 <florian@florian-wolters.de> Date: Wed Sep 2 08:52:35 2020 +0200 Add column for operator to main DB
This commit is contained in:
parent
d99e17fcc3
commit
6858cf5630
@ -148,6 +148,10 @@
|
||||
<td width="35%">ALT-N</td>
|
||||
<td width="65%">set QSL_S/QSL Send to N (N = No QSL/No paperQSL)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="35%">ALT-O</td>
|
||||
<td width="65%">Set operator call (stored until restart of cqrlog). To reset to configured callsign just set to empty.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="35%">ALT-V</td>
|
||||
<td width="65%"><a href="h30.html#m3">Memory up<a></td>
|
||||
@ -388,6 +392,11 @@
|
||||
In the next column is the reference call sign (the core of a slashed call, ie.
|
||||
KH6/OK2CQR). You can change it using Ctrl-R. The purpose is to provide the possibility
|
||||
of changeing the reference call if a correction of membership needed.
|
||||
The second column also shows the operator call if it is set to a different call
|
||||
than what is configured as station callsign in preferences. You can change the
|
||||
operator call tempoarily using the key combination ALT-O. The new operator callsign
|
||||
is stored until restart of cqrlog. To manually reset the operator call back to the
|
||||
station callsign just set an empty value.
|
||||
The number in the right corner denotes the CQRLOG version.
|
||||
<p align=center><img src=img/line.png></p>
|
||||
<a name="ah18"><h2><strong>New QSO (offline logging, ie. from paper log etc.)</strong></h2></a>
|
||||
|
@ -370,6 +370,7 @@
|
||||
<Filename Value="fRefCall.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmRefCall"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit39>
|
||||
<Unit40>
|
||||
@ -860,6 +861,13 @@
|
||||
<Filename Value="uConnectionInfo.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit115>
|
||||
<Unit116>
|
||||
<Filename Value="fChangeOperator.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmChangeOperator"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit116>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -5,7 +5,7 @@ uses
|
||||
cmem,cthreads,uScrollBars,
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, sysutils, Classes, fMain, fPreferences, dUtils, fNewQSO, dialogs,
|
||||
fChangeLocator, dData, dDXCC, fMarkQSL, fDXCCStat, fSort, fFilter,
|
||||
fChangeLocator, fChangeOperator, dData, dDXCC, fMarkQSL, fDXCCStat, fSort, fFilter,
|
||||
fImportProgress, fImportTest, TAChartLazarusPkg, RunTimeTypeInfoControls,
|
||||
fSelectDXCC, fGrayline, fCallbook, fTRXControl, fFreq, fChangeFreq,
|
||||
fAdifImport, fSplash, fSearch, fQTHProfiles, fNewQTHProfile, fEnterFreq,
|
||||
|
@ -700,13 +700,13 @@ object dmData: TdmData
|
||||
Script.Strings = (
|
||||
'CREATE VIEW view_cqrlog_main_by_qsodate AS SELECT id_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, band, dxcc_id.dxcc_ref AS dxcc_ref ,qso_dxcc, profile,idcall, state, lotw_qslsdate, lotw_qslrdate,lotw_qsls, lotw_qslr, cont, qsls_date,qslr_date,club_nr1,club_nr2,club_nr3,'
|
||||
'club_nr4, club_nr5, eqsl_qsl_sent, eqsl_qslsdate, eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by qsodate DESC, time_on DESC;'
|
||||
'club_nr4, club_nr5, eqsl_qsl_sent, eqsl_qslsdate, eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok, operator FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by qsodate DESC, time_on DESC;'
|
||||
'CREATE VIEW view_cqrlog_main_by_qsodate_asc AS SELECT id_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, band, dxcc_id.dxcc_ref AS dxcc_ref ,qso_dxcc, profile,idcall, state, lotw_qslsdate, lotw_qslrdate,lotw_qsls, lotw_qslr, cont, qsls_date,qslr_date,club_nr1,club_nr2,club_nr3,'
|
||||
'club_nr4,club_nr5,eqsl_qsl_sent,eqsl_qslsdate,eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by qsodate ASC, time_on ASC;'
|
||||
'club_nr4,club_nr5,eqsl_qsl_sent,eqsl_qslsdate,eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok, operator FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by qsodate ASC, time_on ASC;'
|
||||
'CREATE VIEW view_cqrlog_main_by_callsign AS SELECT id_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, band, dxcc_id.dxcc_ref AS dxcc_ref ,qso_dxcc, profile,idcall, state, lotw_qslsdate, lotw_qslrdate,lotw_qsls, lotw_qslr, cont, qsls_date,qslr_date,club_nr1,club_nr2,club_nr3,'
|
||||
'club_nr4,club_nr5,eqsl_qsl_sent,eqsl_qslsdate,eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by callsign;'
|
||||
'club_nr4,club_nr5,eqsl_qsl_sent,eqsl_qslsdate,eqsl_qsl_rcvd,eqsl_qslrdate,concat(qsl_r,lotw_qslr,eqsl_qsl_rcvd) as qslr,dxcc_id.country, rxfreq, satellite, prop_mode, srx, stx, srx_string, stx_string, contestname, dok, operator FROM cqrlog_main JOIN dxcc_id ON dxcc_id.adif = cqrlog_main.adif order by callsign;'
|
||||
)
|
||||
Terminator = ';'
|
||||
CommentsinSQL = True
|
||||
|
@ -24,7 +24,7 @@ uses
|
||||
|
||||
const
|
||||
cDB_LIMIT = 500;
|
||||
cDB_MAIN_VER = 17;
|
||||
cDB_MAIN_VER = 18;
|
||||
cDB_COMN_VER = 4;
|
||||
cDB_PING_INT = 300; //ping interval for database connection in seconds
|
||||
//program crashed after long time of inactivity
|
||||
@ -276,14 +276,14 @@ type
|
||||
idcall,state,dok,cont : String; qso_dxcc : Boolean; profile : Integer;
|
||||
nclub1,nclub2,nclub3,nclub4,nclub5, PropMode, Satellite : String;
|
||||
RxFreq : Currency;srx : String;stx : String;srx_string : String;stx_string : String;
|
||||
contestname : String);
|
||||
contestname : String; Op : 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,dok,cont : String;
|
||||
qso_dxcc : Boolean; profile : Integer; PropMode, Satellite : String;
|
||||
RxFreq : Currency; idx : LongInt;srx : String;stx : String;srx_string : String;stx_string : String;
|
||||
contestname : String);
|
||||
contestname : String; Op : String);
|
||||
procedure SaveComment(call,text : String);
|
||||
procedure DeleteComment(id : Integer);
|
||||
procedure PrepareImport;
|
||||
@ -1309,7 +1309,7 @@ procedure TdmData.SaveQSO(date : TDateTime; time_on,time_off,call : String; freq
|
||||
idcall,state,dok,cont : String; qso_dxcc : Boolean; profile : Integer;
|
||||
nclub1,nclub2,nclub3,nclub4,nclub5, PropMode, Satellite : String;
|
||||
RxFreq : Currency;srx : String;stx : String;srx_string : String;stx_string : String;
|
||||
contestname : String);
|
||||
contestname : String; Op : String);
|
||||
var
|
||||
qsodate : String;
|
||||
band : String;
|
||||
@ -1346,7 +1346,7 @@ begin
|
||||
'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, srx, stx,'+
|
||||
'srx_string, stx_string, contestname, dok) values('+QuotedStr(qsodate) +
|
||||
'srx_string, stx_string, contestname, dok, operator) values('+QuotedStr(qsodate) +
|
||||
','+QuotedStr(time_on)+','+QuotedStr(time_off)+
|
||||
','+QuotedStr(call)+','+FloatToStr(freq)+
|
||||
','+QuotedStr(mode)+','+QuotedStr(rst_s)+
|
||||
@ -1366,7 +1366,11 @@ begin
|
||||
','+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)+
|
||||
','+QuotedStr(dok)+')';
|
||||
','+QuotedStr(dok);
|
||||
if (Op <> '') then
|
||||
Q.SQL.Text := Q.SQL.Text+','+QuotedStr(Op)+')'
|
||||
else
|
||||
Q.SQL.Text := Q.SQL.Text+', NULL)';
|
||||
if fDebugLevel >=1 then
|
||||
Writeln(Q.SQL.Text);
|
||||
Q.ExecSQL;
|
||||
@ -1378,7 +1382,7 @@ procedure TdmData.EditQSO(date : TDateTime; time_on,time_off,call : String; freq
|
||||
loc, my_loc,county,award,remarks : String; adif : Word; idcall,state,dok,cont : String;
|
||||
qso_dxcc : Boolean; profile : Integer; PropMode, Satellite : String;
|
||||
RxFreq : Currency; idx : LongInt;srx : String;stx : String;srx_string : String;stx_string : String;
|
||||
contestname : String);
|
||||
contestname : String; Op : String);
|
||||
var
|
||||
qsodate : String;
|
||||
band : String;
|
||||
@ -1422,8 +1426,12 @@ begin
|
||||
', profile = ' + IntToStr(profile) + ', idcall = ' + QuotedStr(idcall) + ', state=' + QuotedStr(state) +
|
||||
', cont = ' + QuotedStr(cont)+ ', prop_mode = ' + QuotedStr(PropMode) + ', satellite = ' + QuotedStr(Satellite)+
|
||||
', rxfreq = ' + rx_freq + ', stx = ' + QuotedStr(stx)+ ', stx_string = ' + QuotedStr(stx_string) + ', srx = ' + QuotedStr(srx)+
|
||||
', srx_string = ' + QuotedStr(srx_string) + ', contestname = ' + QuotedStr(contestname) + ', dok = ' + QuotedStr(dok) +
|
||||
' where id_cqrlog_main = ' + IntToStr(idx);
|
||||
', srx_string = ' + QuotedStr(srx_string) + ', contestname = ' + QuotedStr(contestname) + ', dok = ' + QuotedStr(dok);
|
||||
if (Op <> '') then
|
||||
Q.SQL.Text := Q.SQL.Text+', operator = ' + QuotedStr(Op)
|
||||
else
|
||||
Q.SQL.Text := Q.SQL.Text+', operator = NULL';
|
||||
Q.SQL.Text := Q.SQL.Text+' where id_cqrlog_main = ' + IntToStr(idx);
|
||||
if fDebugLevel >=1 then
|
||||
Writeln(Q.SQL.Text);
|
||||
trQ.StartTransaction;
|
||||
@ -3101,6 +3109,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
if (old_version < 18) then
|
||||
begin
|
||||
if (not FieldExists('cqrlog_main', 'operator')) then
|
||||
begin
|
||||
trQ1.StartTransaction;
|
||||
Q1.SQL.Text := 'alter table cqrlog_main add operator varchar(20) null';
|
||||
if fDebugLevel>=1 then Writeln(Q1.SQL.Text);
|
||||
Q1.ExecSQL;
|
||||
trQ1.Commit;
|
||||
end;
|
||||
end;
|
||||
|
||||
if TableExists('view_cqrlog_main_by_callsign') then
|
||||
begin
|
||||
trQ1.StartTransaction;
|
||||
|
@ -83,6 +83,7 @@ type TnewQSOEntry=record //represents a new qso entry in the log
|
||||
PROP_MODE : String[30];
|
||||
SAT_NAME : String[30];
|
||||
FREQ_RX : String[30];
|
||||
OP:String[30];
|
||||
end;
|
||||
type
|
||||
|
||||
@ -318,7 +319,8 @@ function TfrmAdifImport.fillTypeVariableWithTagData(h:longint;var data:string;va
|
||||
h_AWARD:d.AWARD:=data;
|
||||
h_PROP_MODE:d.PROP_MODE:=data;
|
||||
h_SAT_NAME:d.SAT_NAME:=data;
|
||||
h_FREQ_RX:d.FREQ_RX:=data
|
||||
h_FREQ_RX:d.FREQ_RX:=data;
|
||||
h_OP:d.OP:=data
|
||||
else begin
|
||||
{ writeln('Unnamed...>',pom,'<');fillTypeVariableWithTagData:=false;exit;}
|
||||
end;
|
||||
@ -431,6 +433,8 @@ begin
|
||||
|
||||
d.MODE := UpperCase(d.MODE);
|
||||
|
||||
d.OP := UpperCase(d.OP);
|
||||
|
||||
if not dmUtils.IsAdifOK(d.QSO_DATE,d.TIME_ON,d.TIME_OFF,d.CALL,d.FREQ,d.MODE,d.RST_SENT,
|
||||
d.RST_RCVD,d.IOTA,d.ITUZ,d.CQZ,d.GRIDSQUARE,d.MY_GRIDSQUARE,
|
||||
d.BAND,err) then
|
||||
@ -583,13 +587,14 @@ 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, stx, srx, stx_string, srx_string, contestname, dok) values('+
|
||||
'eqsl_qslrdate,eqsl_qsl_rcvd, prop_mode, satellite, rxfreq, stx, srx, stx_string,'+
|
||||
'srx_string, contestname, dok, operator) 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, :stx, :srx, :stx_string, :srx_string,'+
|
||||
':contestname,:dok)';
|
||||
':contestname,:dok,:operator)';
|
||||
if dmData.DebugLevel >=1 then Writeln(Q1.SQL.Text);
|
||||
Q1.Prepare;
|
||||
Q1.Params[0].AsString := d.QSO_DATE;
|
||||
@ -714,6 +719,10 @@ begin
|
||||
Q1.Params[44].AsString := d.SRX_STRING;
|
||||
Q1.Params[45].AsString := d.CONTEST_ID;
|
||||
Q1.Params[46].AsString := d.DARC_DOK;
|
||||
if (d.OP <> '') then
|
||||
Q1.Params[47].AsString := d.OP
|
||||
else
|
||||
Q1.Params[47].Clear;
|
||||
|
||||
if dmData.DebugLevel >=1 then Writeln(Q1.SQL.Text);
|
||||
Q1.ExecSQL;
|
||||
|
@ -1,22 +1,4 @@
|
||||
{*
|
||||
todo:
|
||||
|
||||
DONE -Contest name: Use same predefined list as is used in contest form's contest name
|
||||
DONE -QSO print: let user design format mask (often published with contest rules)
|
||||
DONE REMOVED -Points counting: consider giving up that. Claimed score is not needed (only nice to know)
|
||||
DONE -Add warning: If preferences/station/contest info is not filled
|
||||
DONE - use form font size routines at formcreate (or show)
|
||||
DONE - save/load export settings
|
||||
DONE - write /tmp/CabReject.log for rejected qsos
|
||||
DONE- clear unused code and debugs
|
||||
- status counts to help manual score counting:
|
||||
+ worked countries
|
||||
+ worked qsos by continents,
|
||||
+ count of different entries in excange1 & exhange2 (if entry is loc count by 4 char)
|
||||
ADDED SETTING + count for user defined country (perhaps)
|
||||
- help button works, but help itself needs now refreshing up to date
|
||||
- test test test
|
||||
*}
|
||||
unit fCabrilloExport;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@ -400,7 +382,7 @@ type
|
||||
var
|
||||
f,r : TextFile;
|
||||
tmp : String;
|
||||
mycall,call: String;
|
||||
mycall,call,
|
||||
myloc, loc : String;
|
||||
myname : String;
|
||||
mailingaddress, zipcity : String;
|
||||
@ -415,6 +397,8 @@ var
|
||||
category_band: String;
|
||||
category_mode: String;
|
||||
address: TStringArray;
|
||||
Operators : TStringList;
|
||||
OpString : String;
|
||||
|
||||
UsrCountryCount : integer = 0;
|
||||
TotalCountryList : TStringList;
|
||||
@ -444,6 +428,8 @@ begin
|
||||
address := zipcity.Split(' ');
|
||||
email := cqrini.ReadString('Station','Email','');
|
||||
club := cqrini.ReadString('Station','Club','');
|
||||
Operators := TStringList.Create;
|
||||
OpString := '';
|
||||
|
||||
if (( mailingaddress ='') or (zipcity='') or (email='')) then
|
||||
begin
|
||||
@ -573,6 +559,8 @@ begin
|
||||
inc(Continents[6].QsoCount); //here not total, but different count
|
||||
end;
|
||||
end;
|
||||
if (dmData.qCQRLOG.FieldByName('operator').AsString <> '') and (Operators.IndexOf(dmData.qCQRLOG.FieldByName('operator').AsString) < 0) then
|
||||
Operators.Add(dmData.qCQRLOG.FieldByName('operator').AsString);
|
||||
|
||||
tmp:= 'QSO: '+
|
||||
Format('%5s', [CabrilloBandToFreq(dmData.qCQRLOG.FieldByName('band').AsString)])+' '+
|
||||
@ -637,6 +625,14 @@ begin
|
||||
CloseFile(r);
|
||||
end;
|
||||
|
||||
for j:=0 to pred(Operators.Count) do
|
||||
begin
|
||||
OpString := OpString+Operators[j];
|
||||
if (j >= 0) then
|
||||
OpString:=OpString+', '
|
||||
end;
|
||||
OpString := OpString + '@' + UpperCase(cqrini.ReadString('Station', 'Call', ''));
|
||||
|
||||
//Check mode result before writing header
|
||||
case category_mode of
|
||||
'CW',
|
||||
@ -658,7 +654,10 @@ begin
|
||||
Writeln(f,'CREATED-BY: CQRLOG '+dmData.VersionString);
|
||||
Writeln(f,'CONTEST: '+cmbCabContestName.Text);
|
||||
Writeln(f,'CALLSIGN: '+mycall);
|
||||
Writeln(f,'CATEGORY-OPERATOR: SINGLE-OP'); // Only single op supported currently
|
||||
if (Operators.Count > 0) then
|
||||
Writeln(f,'CATEGORY-OPERATOR: MULTI-OP')
|
||||
else
|
||||
Writeln(f,'CATEGORY-OPERATOR: SINGLE-OP');
|
||||
Writeln(f,'CATEGORY-BAND: '+category_band);
|
||||
Writeln(f,'CATEGORY-MODE: '+category_mode);
|
||||
Writeln(f,'CATEGORY-POWER: '+CabrilloPower(cmbCabPower.ItemIndex));
|
||||
@ -669,6 +668,8 @@ begin
|
||||
Writeln(f,'CLAIMED-SCORE: ');
|
||||
Writeln(f,'SPECIFIC: ');
|
||||
Writeln(f,'CLUB: '+club);
|
||||
if (Operators.Count > 0) then
|
||||
Writeln(f,'OPERATORS: '+OpString);
|
||||
Writeln(f,'NAME: '+myname);
|
||||
Writeln(f,'ADDRESS: '+mailingaddress);
|
||||
Writeln(f,'ADDRESS-CITY: '+address[1]);
|
||||
|
@ -31,6 +31,7 @@ object frmChangeLocator: TfrmChangeLocator
|
||||
Top = 27
|
||||
Width = 216
|
||||
BorderSpacing.Top = 2
|
||||
MaxLength = 6
|
||||
OnChange = edtLocatorChange
|
||||
OnKeyPress = edtLocatorKeyPress
|
||||
TabOrder = 0
|
||||
|
@ -46,7 +46,13 @@ end;
|
||||
|
||||
procedure TfrmChangeLocator.btnOKClick(Sender: TObject);
|
||||
begin
|
||||
ModalResult := mrOK
|
||||
if dmUtils.isLocOK(edtLocator.Text) then
|
||||
ModalResult := mrOK
|
||||
else
|
||||
Begin
|
||||
edtLocator.Text:='ERROR!';
|
||||
edtLocator.SelStart := Length(edtLocator.Text);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmChangeLocator.edtLocatorChange(Sender: TObject);
|
||||
|
69
src/fChangeOperator.lfm
Normal file
69
src/fChangeOperator.lfm
Normal file
@ -0,0 +1,69 @@
|
||||
object frmChangeOperator: TfrmChangeOperator
|
||||
Left = 657
|
||||
Height = 108
|
||||
Top = 416
|
||||
Width = 236
|
||||
HorzScrollBar.Page = 239
|
||||
VertScrollBar.Page = 88
|
||||
ActiveControl = edtOperator
|
||||
AutoSize = True
|
||||
BorderIcons = [biSystemMenu]
|
||||
BorderStyle = bsDialog
|
||||
BorderWidth = 10
|
||||
Caption = 'Change operator'
|
||||
ClientHeight = 108
|
||||
ClientWidth = 236
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.0.2.0'
|
||||
object lblEnterOperator: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 8
|
||||
Width = 120
|
||||
Caption = 'Enter your operator:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtOperator: TEdit
|
||||
AnchorSideTop.Control = lblEnterOperator
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 34
|
||||
Top = 27
|
||||
Width = 216
|
||||
BorderSpacing.Top = 2
|
||||
MaxLength = 20
|
||||
OnChange = edtOperatorChange
|
||||
OnKeyPress = edtOperatorKeyPress
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnOK: TButton
|
||||
AnchorSideTop.Control = edtOperator
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 41
|
||||
Top = 71
|
||||
Width = 64
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 10
|
||||
BorderSpacing.InnerBorder = 4
|
||||
Caption = 'OK'
|
||||
Constraints.MinWidth = 64
|
||||
OnClick = btnOKClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnStorno: TButton
|
||||
AnchorSideTop.Control = edtOperator
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 160
|
||||
Height = 41
|
||||
Top = 71
|
||||
Width = 68
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 10
|
||||
BorderSpacing.InnerBorder = 4
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
58
src/fChangeOperator.pas
Normal file
58
src/fChangeOperator.pas
Normal file
@ -0,0 +1,58 @@
|
||||
unit fChangeOperator;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
Buttons;
|
||||
|
||||
type
|
||||
|
||||
{ TfrmChangeOperator }
|
||||
|
||||
TfrmChangeOperator = class(TForm)
|
||||
btnOK: TButton;
|
||||
btnStorno: TButton;
|
||||
edtOperator: TEdit;
|
||||
lblEnterOperator: TLabel;
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
procedure edtOperatorChange(Sender: TObject);
|
||||
procedure edtOperatorKeyPress(Sender: TObject; var Key: char);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
frmChangeOperator: TfrmChangeOperator;
|
||||
|
||||
implementation
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfrmChangeOperator }
|
||||
uses dUtils;
|
||||
|
||||
procedure TfrmChangeOperator.edtOperatorKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if (key = #13) then
|
||||
begin
|
||||
btnOK.Click;
|
||||
Key := #0
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TfrmChangeOperator.btnOKClick(Sender: TObject);
|
||||
begin
|
||||
ModalResult := mrOK
|
||||
end;
|
||||
|
||||
procedure TfrmChangeOperator.edtOperatorChange(Sender: TObject);
|
||||
begin
|
||||
edtOperator.SelStart := Length(edtOperator.Text);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -165,6 +165,8 @@ var
|
||||
dupe : String;
|
||||
cont, WAZ, posun, ITU, lat, long, pfx, country: string;
|
||||
message : String;
|
||||
Operators : TStringList;
|
||||
OpString : String;
|
||||
begin
|
||||
SaveSettings;
|
||||
date := dmUtils.GetDateTime(0);
|
||||
@ -230,6 +232,8 @@ begin
|
||||
dxccs := TStringList.Create;
|
||||
new_dxcc := '';
|
||||
callsign_list := TStringList.Create;
|
||||
Operators := TStringList.Create;
|
||||
OpString := '';
|
||||
try try
|
||||
dmData.trQ.StartTransaction;
|
||||
dmData.Q.Open;
|
||||
@ -302,6 +306,9 @@ begin
|
||||
else
|
||||
callsign_list.Add(dmData.Q.FieldByName('callsign').AsString);
|
||||
|
||||
if (dmData.Q.FieldByName('operator').AsString <> '') and (Operators.IndexOf(dmData.Q.FieldByName('operator').AsString) < 0) then
|
||||
Operators.Add(dmData.Q.FieldByName('operator').AsString);
|
||||
|
||||
s.Add(RightStr(StringReplace(dmData.Q.FieldByName('qsodate').AsString,'-','',[rfReplaceAll, rfIgnoreCase]),6)+';'+
|
||||
StringReplace(dmData.Q.FieldByName('time_on').AsString,':','',[rfReplaceAll, rfIgnoreCase])+';'+
|
||||
dmData.Q.FieldByName('callsign').AsString+';'+
|
||||
@ -336,6 +343,12 @@ begin
|
||||
dmData.trQ.Rollback;
|
||||
dmData.Q.Close
|
||||
end;
|
||||
for j:=0 to pred(Operators.Count) do
|
||||
begin
|
||||
OpString := OpString+Operators[j];
|
||||
if (j >= 0) and (j < (Operators.Count-1)) then
|
||||
OpString:=OpString+';'
|
||||
end;
|
||||
try
|
||||
AssignFile(f,edtFileName.Text);
|
||||
Rewrite(f);
|
||||
@ -351,7 +364,8 @@ begin
|
||||
Writeln(f,'PBand='+EdiBand(dmData.qCQRLOG.FieldByName('band').AsString));
|
||||
Writeln(f,'PClub='+club);
|
||||
Writeln(f,'RName='+myname);
|
||||
Writeln(f,'RCall='+mycall);
|
||||
if (Operators.Count = 0) then
|
||||
Writeln(f,'RCall='+mycall);
|
||||
Writeln(f,'RAdr1='+mailingaddress);
|
||||
Writeln(f,'RAdr2='+zipcity);
|
||||
Writeln(f,'RPoCo=');
|
||||
@ -359,7 +373,10 @@ begin
|
||||
Writeln(f,'RCoun='+country);
|
||||
Writeln(f,'RPhon=');
|
||||
Writeln(f,'RHBBS='+email);
|
||||
Writeln(f,'MOpe1=');
|
||||
if (Operators.Count > 0) then
|
||||
Writeln(f,'MOpe1='+OpString)
|
||||
else
|
||||
Writeln(f,'MOpe1=');
|
||||
Writeln(f,'MOpe2=');
|
||||
Writeln(f,'STXEq='+edtTxEquipment.Text);
|
||||
Writeln(f,'SPowe='+edtTxPower.Text);
|
||||
|
@ -187,7 +187,10 @@ var
|
||||
QSLSDate,QSLRDate,eQslS,eQslSDate,eQslR,eQslRDate,PropMode, Satellite, RxFreq, stx,
|
||||
srx, stx_string, srx_string, contestname, Darc_Dok : String);
|
||||
|
||||
var
|
||||
station_callsign : String;
|
||||
begin
|
||||
station_callsign := cqrini.ReadString('Station', 'Call', '');
|
||||
leng := 0;
|
||||
if ExDate then
|
||||
begin
|
||||
@ -210,6 +213,9 @@ var
|
||||
SaveTag(tmp,leng);
|
||||
end;
|
||||
end;
|
||||
|
||||
SaveTag(dmUtils.StringToADIF('<STATION_CALLSIGN', station_callsign), leng);
|
||||
|
||||
if ExCall then
|
||||
SaveTag(dmUtils.StringToADIF('<CALL',dmUtils.RemoveSpaces(call)),leng);
|
||||
if ExMode then
|
||||
@ -302,7 +308,10 @@ var
|
||||
if dmUtils.IsLocOK(MyLoc) then
|
||||
SaveTag(dmUtils.StringToADIF('<MY_GRIDSQUARE',dmUtils.StdFormatLocator(MyLoc)),leng);
|
||||
if ExOperator then
|
||||
SaveTag(dmUtils.StringToADIF('<OPERATOR',cqrini.ReadString('Station', 'Call', '')),leng);
|
||||
begin
|
||||
if (Op <> '') and (Op <> station_callsign) then
|
||||
SaveTag(dmUtils.StringToADIF('<OPERATOR', Op) ,leng);
|
||||
end;
|
||||
if ExDistance then
|
||||
begin
|
||||
dmUtils.DistanceFromLocator(dmUtils.CompleteLoc(MyLoc),Loc,qrb,qrc);
|
||||
@ -519,7 +528,7 @@ begin //TfrmExportProgress
|
||||
Source.Fields[17].AsString, //waz
|
||||
Source.Fields[18].AsString, //loc
|
||||
Source.Fields[19].AsString, //myloc
|
||||
cqrini.ReadString('Station', 'Call', ''), //operator
|
||||
Source.FieldByName('operator').AsString, //operator
|
||||
Source.Fields[20].AsString, //county
|
||||
Source.Fields[21].AsString, //award
|
||||
Source.Fields[22].AsString, //remarks
|
||||
@ -771,12 +780,9 @@ var
|
||||
|
||||
if ExOperator then
|
||||
begin
|
||||
tmp := cqrini.ReadString('Station', 'Call', '');
|
||||
if tmp = '' then
|
||||
Op := ' '
|
||||
else
|
||||
Op := tmp;
|
||||
Writeln(f,SetData('WOperator', '10' ,tmp));
|
||||
if (Op = '') then
|
||||
Op := ' ';
|
||||
Writeln(f,SetData( 'WOperator', '10',Op));
|
||||
end;
|
||||
|
||||
if ExDistance then
|
||||
@ -1308,7 +1314,7 @@ begin
|
||||
Source.Fields[17].AsString, //waz
|
||||
Source.Fields[18].AsString, //loc
|
||||
Source.Fields[19].AsString, //myloc
|
||||
cqrini.ReadString('Station', 'Call', ''), //operator
|
||||
Source.FieldByName('operator').AsString, //operator
|
||||
Source.Fields[20].AsString, //county
|
||||
Source.Fields[21].AsString, //award
|
||||
Source.Fields[22].AsString, //remarks
|
||||
|
@ -24,8 +24,9 @@ uses
|
||||
FileUtil, LazFileUtils;
|
||||
|
||||
const
|
||||
cRefCall = 'Ref. call (to change press CTRL+R) ';
|
||||
cMyLoc = 'My grid (to change press CTRL+L) ';
|
||||
cRefCall = 'Ref.call (CTRL+R): ';
|
||||
cMyLoc = 'My Loc (CTRL+L): ';
|
||||
cOperator ='Operator (ALT+O): ';
|
||||
cQSLMgrVersionCheckUrl = 'http://www.ok2cqr.com/linux/cqrlog/qslmgr/ver.dat';
|
||||
cDOKVersionCheckUrl = 'https://www.df2et.de/cqrlog/ver.dat';
|
||||
cCntyVersionCheckUrl = 'http://www.ok2cqr.com/linux/cqrlog/ctyfiles/ver.dat';
|
||||
@ -613,6 +614,8 @@ type
|
||||
WsjtxDecodeRunning : boolean;
|
||||
|
||||
RememberAutoMode : Boolean;
|
||||
|
||||
Op : String;
|
||||
procedure showDOK(stat:boolean);
|
||||
procedure ShowDXCCInfo(ref_adif : Word = 0);
|
||||
procedure ShowFields;
|
||||
@ -781,7 +784,7 @@ implementation
|
||||
|
||||
{ TfrmNewQSO }
|
||||
|
||||
uses dUtils, fChangeLocator, dDXCC, dDXCluster, dData, fMain, fSelectDXCC, fGrayline,
|
||||
uses dUtils, fChangeLocator, fChangeOperator, dDXCC, dDXCluster, dData, fMain, fSelectDXCC, fGrayline,
|
||||
fTRXControl, fPreferences, fSplash, fDXCluster, fDXCCStat,fQSLMgr, fSendSpot,
|
||||
fQSODetails, fWAZITUStat, fDOKStat, fIOTAStat, fGraphStat, fImportProgress, fBandMap,
|
||||
fLongNote, fRefCall, fKeyTexts, fCWType, fExportProgress, fPropagation, fCallAttachment,
|
||||
@ -1359,10 +1362,10 @@ begin
|
||||
dmUtils.ModifyXplanetConf;
|
||||
dmUtils.LoadFontSettings(frmNewQSO);
|
||||
dmUtils.LoadBandLabelSettins;
|
||||
sbNewQSO.Panels[0].Width := 280;
|
||||
sbNewQSO.Panels[1].Width := 310;
|
||||
sbNewQSO.Panels[0].Width := 180;
|
||||
sbNewQSO.Panels[1].Width := 200;
|
||||
|
||||
sbNewQSO.Panels[2].Width := 70;
|
||||
sbNewQSO.Panels[2].Width := 200;
|
||||
|
||||
sbNewQSO.Panels[3].Text := 'Ver. '+ dmData.VersionString;
|
||||
sbNewQSO.Panels[3].Width := 60;
|
||||
@ -1378,6 +1381,8 @@ begin
|
||||
|
||||
InitializeCW;
|
||||
|
||||
Op := '';
|
||||
|
||||
if dbgrdQSOBefore.Visible then
|
||||
mnuQSOBefore.Caption := 'Disable QSO before grid'
|
||||
else
|
||||
@ -2155,6 +2160,13 @@ begin
|
||||
'STX_STRING':edtContestExchangeMessageSent.Text := data;
|
||||
//same with SRX
|
||||
'SRX_STRING': edtContestExchangeMessageReceived.Text:= data;
|
||||
'OPERATOR': Begin
|
||||
if ((data<>'') and (Op = UpperCase(cqrini.ReadString('Station', 'Call', '')))) then
|
||||
Begin
|
||||
Op := data;
|
||||
sbNewQSO.Panels[2].Text := cOperator+Op;
|
||||
end;
|
||||
end;
|
||||
end; //case
|
||||
end; //repeat
|
||||
until Buf = '';
|
||||
@ -2945,7 +2957,12 @@ begin
|
||||
if RemoteName = 'WSJT-X' then //no contest in JTDX
|
||||
begin
|
||||
if dmData.DebugLevel>=1 then Writeln('Tail logging part entered');
|
||||
OpCall := trim(StrBuf(index)); //operator callsign (in contest, club etc.)
|
||||
OpCall := UpperCase(trim(StrBuf(index))); //operator callsign (in contest, club etc.)
|
||||
if ((OpCall<>'') and (Op = UpperCase(cqrini.ReadString('Station', 'Call', '')))) then
|
||||
Begin
|
||||
Op := OpCall;
|
||||
sbNewQSO.Panels[2].Text := cOperator+Op;
|
||||
end;
|
||||
ExchR := trim(StrBuf(index)); //fake, this is actually "My call". Not used
|
||||
ExchR := trim(StrBuf(index)); //fake, this is actually "My grid". Not used
|
||||
ExchS := trim(StrBuf(index)); //contest exchange sent. report + others
|
||||
@ -3218,7 +3235,8 @@ begin
|
||||
edtContestSerialSent.Text,
|
||||
edtContestExchangeMessageReceived.Text,
|
||||
edtContestExchangeMessageSent.Text,
|
||||
edtContestName.Text);
|
||||
edtContestName.Text,
|
||||
Op);
|
||||
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
|
||||
@ -3311,7 +3329,8 @@ begin
|
||||
edtContestSerialSent.Text,
|
||||
edtContestExchangeMessageReceived.Text,
|
||||
edtContestExchangeMessageSent.Text,
|
||||
edtContestName.Text
|
||||
edtContestName.Text,
|
||||
Op
|
||||
)
|
||||
end;
|
||||
if (cmbPropagation.Text = 'SAT|Satellite') then
|
||||
@ -5614,6 +5633,27 @@ begin
|
||||
cmbQSL_S.text:='SB';
|
||||
if ((Shift = [ssAlt]) and (key = VK_N)) then
|
||||
cmbQSL_S.text:='N';
|
||||
if ((Shift = [ssAlt]) and (key = VK_O)) then
|
||||
begin
|
||||
with TfrmChangeOperator.Create(self) do
|
||||
try
|
||||
edtOperator.Text := Op;
|
||||
ShowModal;
|
||||
if ModalResult = mrOk then
|
||||
begin
|
||||
if UpperCase(edtOperator.Text)<>'' then
|
||||
Op := UpperCase(edtOperator.Text)
|
||||
else
|
||||
Op:= '';
|
||||
if dmData.DebugLevel>=1 then writeln('Operator changed: '+Op);
|
||||
if Op<>UpperCase(cqrini.ReadString('Station', 'Call', '')) then
|
||||
sbNewQSO.Panels[2].Text := cOperator+Op
|
||||
else sbNewQSO.Panels[2].Text :='';
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
if ((Shift = [ssAlt]) and (key = VK_H)) then
|
||||
begin
|
||||
ShowHelp;
|
||||
@ -5639,7 +5679,7 @@ begin
|
||||
#12 : begin // CTRL+L
|
||||
with TfrmChangeLocator.Create(self) do
|
||||
try
|
||||
edtLocator.Text := copy(sbNewQSO.Panels[0].Text,Length(cMyLoc)+1,6);
|
||||
edtLocator.Text := copy(sbNewQSO.Panels[0].Text,Length(cMyLoc)+1,10);
|
||||
ShowModal;
|
||||
if ModalResult = mrOk then
|
||||
begin
|
||||
@ -5651,7 +5691,7 @@ begin
|
||||
end;
|
||||
key := #0
|
||||
end;
|
||||
#96 : begin
|
||||
#96 : begin // CTRL+w
|
||||
acSendSpot.Execute;
|
||||
Key := #0
|
||||
end;
|
||||
@ -6329,7 +6369,8 @@ begin
|
||||
end;
|
||||
dmSatellite.GetListOfSatellites(cmbSatellite, dmData.qCQRLOG.FieldByName('satellite').AsString);
|
||||
dmSatellite.GetListOfPropModes(cmbPropagation, dmData.qCQRLOG.FieldByName('prop_mode').AsString);
|
||||
edtRXFreq.Text := FloatToStr(dmData.qCQRLOG.FieldByName('rxfreq').AsFloat)
|
||||
edtRXFreq.Text := FloatToStr(dmData.qCQRLOG.FieldByName('rxfreq').AsFloat);
|
||||
Op := dmData.qCQRLOG.FieldByName('operator').AsString;
|
||||
end;
|
||||
if (edtRXFreq.Text = '0') then
|
||||
edtRXFreq.Text := '';
|
||||
|
@ -54,4 +54,5 @@ const h_AWARD = 53520;
|
||||
const h_PROP_MODE = 17551;
|
||||
const h_SAT_NAME = 39545;
|
||||
const h_FREQ_RX = 2926;
|
||||
const h_OP = 16130;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user