TRXControl updates
-uses new database column 'info' to show short description of selected memory. if no 'info' is entered for memory will show memory number and total count of memories as 'X of Y'. -Vfo buttons now visible. They change vfo, but there is no feedback of current vfo as Icom brand rigs do not support "Get_Vfo" command. -Checkbox 'pereferences/TRXcontor/Switch only between mode related memories' now works -Selection 'Open memory list' opens list of memories without editing buttons and without showModal. List can be kept open while logging qsos. Double click on list line changes rig to that frequency/mode. -Double click of line works also on Add/Modify memory list lines. -Corresponding help files updated. Squashed commit of the following: commit c46c9f799c47d7d89160e2386df9b285a90631b8 Author: OH1KH <oh1kh@sral.fi> Date: Fri Apr 19 12:24:34 2019 +0300 Fix trxcontrol help commit 00bde9d982698c083453e555a07ccefdd94fb587 Author: OH1KH <oh1kh@sral.fi> Date: Wed Apr 17 11:03:29 2019 +0300 vfo buttons visible commit e2e6b6e00a45625cf107cc0b6fce8234c5dd7267 Author: OH1KH <oh1kh@sral.fi> Date: Tue Apr 16 19:05:57 2019 +0300 Removed some unconditional debug prints commit 57b71577959b0a9d6425a0e76f0631b71259cb47 Author: OH1KH <oh1kh@sral.fi> Date: Tue Apr 16 11:12:24 2019 +0300 restored changelog, removed readme.oh1kh' commit 2287b6a1b426a7a222ed204e5e6bdc837efc51b4 Author: OH1KH <oh1kh@sral.fi> Date: Tue Apr 16 11:04:02 2019 +0300 Fixed mode related settings usage + help files' commit 871e260c684d292f66eb2d54602a9ae33923c94f Merge: a1c0a1729112ef
Author: OH1KH <oh1kh@sral.fi> Date: Mon Apr 15 11:44:08 2019 +0300 Fixed merge conflict in dData.lfm commit a1c0a1737b022043ac0c8b67d19cd96c3def4223 Merge: 65f3fec9de2bfc
Author: OH1KH <oh1kh@sral.fi> Date: Mon Mar 18 20:49:36 2019 +0200 Merge branch 'master' into feature_trxmonitor commit 65f3fec81e347e54427ed090f648958ddf01ca15 Author: OH1KH <oh1kh@sral.fi> Date: Mon Mar 18 20:42:24 2019 +0200 TRXfiles updated from devel commit cbed44dfdd645105fb69fed57c791ec1368ea58d Author: OH1KH <oh1kh@sral.fi> Date: Thu Apr 19 18:23:33 2018 +0300 feature trxmonitor
11
help/h1.html
@ -177,8 +177,10 @@
|
||||
<div align=justify>
|
||||
Checked bands are visible in both statistics appearing at the bottom of logging screen
|
||||
(bands/modes of the actual logged station) and main DXCC, WAZ and ITU zones statistics.
|
||||
It also affects the Challenge points at the bottom of the DXCC statistics.
|
||||
</div>
|
||||
It also affects the Challenge points at the bottom of the DXCC statistics.<br>
|
||||
Pressing button <b>frequencies</b> band, and mode limits within bands, can be set.
|
||||
</div><br>
|
||||
<img src=img/h9b.png border=0><br><br>
|
||||
<p align=center><img src=img/line.png></p>
|
||||
<a name=ah7><h2><strong>TRX Control</strong></h2></a>
|
||||
<img src=img/h10.png border=0><br><br>
|
||||
@ -230,8 +232,9 @@ and
|
||||
ALT+B (Mem up). These keys are used in N6TR clones to switch between bands.<br>
|
||||
You can also switch between memory frequencies with TRXControl's <b>M up</b> and <b>M dwn</b> buttons and set rig frequencies
|
||||
by double clicking rows in TRXControl's Add/Modify memory list.
|
||||
<br><br>
|
||||
<img src="img/radio_memory.png"><br><br>
|
||||
</p><p>See also <a href="h30.html">Operation: TRXControl</a>
|
||||
</p>
|
||||
<img src="img/h121.png"><br><br>
|
||||
<a name=ah8><h2><strong>Modes</strong></h2></a>
|
||||
<img src=img/h11.png border=0><br><br>
|
||||
Here you can set up the default bandwidth for any of the supported modes (CW - SSB - RTTY - AM - FM).
|
||||
|
@ -31,17 +31,32 @@
|
||||
<p align=center><img src=img/line.png></p>
|
||||
|
||||
<h3 ><a name="m3"></a>TRX Control</h3>
|
||||
<p><img src="img/h117.png" name="7" width="353" height="367">
|
||||
<img src="img/h118.png" name="8" width="353" height="367">
|
||||
<img src="img/h117.png" name="7" width="353" height="367">
|
||||
<img src="img/h118.png" name="8" width="353" height="367">
|
||||
</img>
|
||||
<p>
|
||||
TRX Control window Shows current frequency and buttons allow change of Band, mode, memory and rig.
|
||||
<br><br>You can select rig vfo with buttons <b>A</b> and <b>B</b> but there is no feedback what vfo is currenty used as Icom brand rigs do not support "Get_vfo" command.
|
||||
</p><p>If <b>M_up</b> or <b>M_dwn</b> are pressed or memory is selected by double click of memory list, the information text will show up to <b>Mem Info</b> field. If frequency is changed manually after that info text will disappear.
|
||||
<br>If memory does not have info text (max 25chr) just <b>x of y</b> is displayed where x refers to memory order in Add/Modify memory list and y total amount of memories.
|
||||
<b>None</b> (in red) indicates that there are no memory lines.
|
||||
<br>With <b>P-on/off/stb</b> buttons current rig can be set ON, OFF or STANDBY (if it supports rigctld power commands).
|
||||
<br>Default setting for power buttons is hidden. You can change it via dropdown menu "Preferences".
|
||||
<br><br><b>M_up</b> and <b>M_dwn</b> buttons select next/previous entry from memory list. <b>M_Wri</b> adds entry to memory list from current rig frequency and mode and info field shows<b> "MW ok"</b>.
|
||||
<br>
|
||||
<br><br><b>NOTE!!!</b> <br>Check "pereferences/TRXcontor/Switch only between mode related memories"<br>Cqrlog TRXcontrol memories are categorized by mode (groups). CW, SSB(=AM+USB+LSB+FM), RTTY(=RTTY+DATA+PKTLSB+PKTUSB+PKTFM)[no mode selector for PKT* but you may "M wri" them anyway].
|
||||
So do not wonder if you get smaller amount of memories than in your list when pressing <b>M_up</b> and <b>M_dwn</b> with "Show mode related" checked.
|
||||
<br><br>
|
||||
<img src="img/h122.png" name="9" width="393" height="367">
|
||||
<img src="img/h121.png" name="10" width="373" height="367">
|
||||
</img>
|
||||
<br/>
|
||||
TRX Control window Shows current frequency and buttons allow change of Band, mode, memory and rig.
|
||||
</br><b>M_up</b> and <b>M_dwn</b> buttons select next/previous entry from memory list. <b>Buttons are current mode related</b>.
|
||||
</br>Example: If your Mode is SSB, only memories with mode USB or LSB will take effect from M-up/M_dwn buttons.
|
||||
</br><b>M_Wri</b> adds entry to memory list from current rig frequency and mode.
|
||||
</br>
|
||||
</br>With <b>P-on/off/stb</b> buttons current rig can be set ON, OFF or STANDBY (if it supports rigctld power commands).
|
||||
</br>Default setting for power buttons is hidden. You can change it via dropdown menu "Preferences".
|
||||
<br>You can set rig by double click of an memory row in <b>Open memory list</b>. Similar action happen also in <b>Add/Modify memories</b>. The differense is that you can keep
|
||||
<b>Open memory list</b> open while loggeing qsos etc. Where as <b>Add/Modify memories</b>, when open, blocks other functionality.
|
||||
<br>While <b>Add/Modify memories</b> is open you can use buttons in right frame. Texts of buttons are quite self explaining.
|
||||
<br>Deleting a memory line, or all lines, do not have any further warning questions (Are you sure?). In case you deleted something wrong just close window with <b>Cancel</b>. No changes are recorded then.
|
||||
<br>Closing <b>Add/Modify memories</b> is done with buttons <b>OK</b> or <b>Cancel</b>. Closing <b> Open memory list</b> window must be done using <b>x</b> at top right corner of window.
|
||||
<br> <b> Open memory list</b> closes also if <b>Add/Modify memories</b> is opened. They can not be open at same time.
|
||||
|
||||
</p><p>See also <a href="h1.html#ah7">setting up TRXControl</a>
|
||||
</p>
|
||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
BIN
help/img/h121.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
help/img/h122.png
Normal file
After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 8.1 KiB |
@ -2,10 +2,10 @@ object dmData: TdmData
|
||||
OnCreate = DataModuleCreate
|
||||
OnDestroy = DataModuleDestroy
|
||||
OldCreateOrder = False
|
||||
Height = 674
|
||||
HorizontalOffset = 149
|
||||
VerticalOffset = 254
|
||||
Width = 1024
|
||||
Height = 606
|
||||
HorizontalOffset = 408
|
||||
VerticalOffset = 52
|
||||
Width = 822
|
||||
PPI = 96
|
||||
object dsrMain: TDataSource
|
||||
DataSet = qCQRLOG
|
||||
|
102
src/dData.pas
@ -179,7 +179,7 @@ type
|
||||
procedure UpgradeCommonDatabase(old_version : Integer);
|
||||
procedure PrepareMysqlConfigFile;
|
||||
procedure DeleteOldConfigFiles;
|
||||
procedure GetCurrentFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure GetCurrentFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
public
|
||||
MainCon : TSQLConnection;
|
||||
BandMapCon : TSQLConnection;
|
||||
@ -316,8 +316,8 @@ type
|
||||
procedure RemoveLoTWUploadedFlag(id : Integer);
|
||||
procedure StoreFreqMemories(grid : TStringGrid);
|
||||
procedure LoadFreqMemories(grid : TStringGrid);
|
||||
procedure GetPreviousFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure GetNextFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure GetPreviousFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
procedure GetNextFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
procedure OpenFreqMemories(mode : String);
|
||||
procedure SaveBandChanges(band : String; BandBegin, BandEnd, BandCW, BandRTTY, BandSSB, RXOffset, TXOffset : Currency);
|
||||
procedure GetRXTXOffset(Freq : Currency; var RXOffset,TXOffset : Currency);
|
||||
@ -329,7 +329,7 @@ var
|
||||
dmData : TdmData;
|
||||
handle : THandle;
|
||||
reg : TRegExpr;
|
||||
|
||||
MemNR : array of integer;
|
||||
|
||||
implementation
|
||||
|
||||
@ -1153,7 +1153,7 @@ begin
|
||||
end;
|
||||
|
||||
tmrDBPing.Interval := CDB_PING_INT*1000;
|
||||
tmrDBPing.Enabled := True
|
||||
tmrDBPing.Enabled := True;
|
||||
end;
|
||||
|
||||
procedure TdmData.DataModuleDestroy(Sender: TObject);
|
||||
@ -3122,7 +3122,8 @@ begin
|
||||
Q1.SQL.Add(' id int NOT NULL AUTO_INCREMENT PRIMARY KEY,');
|
||||
Q1.SQL.Add(' freq numeric(10,4) NOT NULL,');
|
||||
Q1.SQL.Add(' mode varchar(10) NOT NULL,');
|
||||
Q1.SQL.Add(' bandwidth int NOT NULL');
|
||||
Q1.SQL.Add(' bandwidth int NOT NULL,');
|
||||
Q1.SQL.Add(' info varchar(25) NULL'); //null makes log backward compatible with old cqrlogs
|
||||
Q1.SQL.Add(') COLLATE '+QuotedStr('utf8_bin')+';');
|
||||
if fDebugLevel>=1 then Writeln(Q1.SQL.Text);
|
||||
Q1.ExecSQL;
|
||||
@ -3974,7 +3975,7 @@ end;
|
||||
|
||||
procedure TdmData.StoreFreqMemories(grid : TStringGrid);
|
||||
const
|
||||
C_INS = 'insert into freqmem (freq,mode,bandwidth) values (:freq,:mode,:bandwidth)';
|
||||
C_INS = 'insert into freqmem (freq,mode,bandwidth,info) values (:freq,:mode,:bandwidth,:info)';
|
||||
C_DEL = 'delete from freqmem';
|
||||
var
|
||||
i : Integer;
|
||||
@ -3990,6 +3991,7 @@ begin
|
||||
Q.Params[0].AsFloat := StrToFloat(grid.Cells[0,i]);
|
||||
Q.Params[1].AsString := grid.Cells[1,i];
|
||||
Q.Params[2].AsInteger := StrToInt(grid.Cells[2,i]);
|
||||
Q.Params[3].AsString := grid.Cells[3,i];
|
||||
Q.ExecSQL
|
||||
end
|
||||
except
|
||||
@ -4005,7 +4007,7 @@ end;
|
||||
|
||||
procedure TdmData.LoadFreqMemories(grid : TStringGrid);
|
||||
const
|
||||
C_SEL = 'select freq,mode,bandwidth from freqmem order by id';
|
||||
C_SEL = 'select freq,mode,bandwidth,info from freqmem order by id';
|
||||
begin
|
||||
try
|
||||
grid.RowCount := 1;
|
||||
@ -4018,6 +4020,7 @@ begin
|
||||
grid.Cells[0,grid.RowCount-1] := FloatToStrF(Q.Fields[0].AsFloat,ffFixed,15,3);
|
||||
grid.Cells[1,grid.RowCount-1] := Q.Fields[1].AsString;
|
||||
grid.Cells[2,grid.RowCount-1] := IntToStr(Q.Fields[2].AsInteger);
|
||||
grid.Cells[3,grid.RowCount-1] := Q.Fields[3].AsString;
|
||||
Q.Next
|
||||
end
|
||||
finally
|
||||
@ -4028,54 +4031,89 @@ end;
|
||||
|
||||
procedure TdmData.OpenFreqMemories(mode : String);
|
||||
const
|
||||
C_SEL = 'select id,freq,mode,bandwidth from freqmem';
|
||||
C_SEL = 'select id,freq,mode,bandwidth,info from freqmem';
|
||||
var
|
||||
c : integer;
|
||||
begin
|
||||
qFreqMem.Close;
|
||||
if trFreqMem.Active then
|
||||
trFreqMem.Rollback;
|
||||
|
||||
if (mode='') then
|
||||
qFreqMem.SQL.Text := C_SEL + ' order by id'
|
||||
else begin
|
||||
if ((mode='LSB') or (mode='USB') or (mode='FM') or (mode='AM')) then
|
||||
begin
|
||||
qFreqMem.SQL.Text := C_SEL + ' where (mode = ' + QuotedStr('LSB') +') or ' +
|
||||
'(mode = ' + QuotedStr('USB') + ') or (mode = ' + QuotedStr('FM') + ') or ' +
|
||||
'(mode = ' + QuotedStr('AM')+ ') order by id'
|
||||
end
|
||||
else
|
||||
qFreqMem.SQL.Text := C_SEL + ' where (mode = ' + QuotedStr(mode) +') order by id'
|
||||
end;
|
||||
if not cqrini.ReadBool('TRX','MemModeRelated',False) then mode:=''; //use related settings!!
|
||||
|
||||
if (mode='') then qFreqMem.SQL.Text := C_SEL + ' order by id'
|
||||
else
|
||||
begin
|
||||
case mode of
|
||||
'LSB','USB','FM','AM' :qFreqMem.SQL.Text := C_SEL + ' where (mode = ' + QuotedStr('LSB') +') or ' +
|
||||
'(mode = ' + QuotedStr('USB') + ') or (mode = ' + QuotedStr('FM') + ') or ' +
|
||||
'(mode = ' + QuotedStr('AM')+ ') order by id';
|
||||
'RTTY','PKTLSB','PKTUSB',
|
||||
'PKTFM','DATA' :qFreqMem.SQL.Text := C_SEL + ' where (mode = ' + QuotedStr('RTTY') +') or ' +
|
||||
'(mode = ' + QuotedStr('PKTLSB') + ') or (mode = ' + QuotedStr('PKTUSB') + ') or ' +
|
||||
'(mode = ' + QuotedStr('PKTFM') + ') or (mode = ' + QuotedStr('DATA')+ ') order by id';
|
||||
else
|
||||
qFreqMem.SQL.Text := C_SEL + ' where (mode = ' + QuotedStr(mode) +') order by id'
|
||||
end;
|
||||
end;
|
||||
if fDebugLevel>=1 then Writeln('FreqmemSql:',qFreqMem.SQL.Text);
|
||||
trFreqMem.StartTransaction;
|
||||
qFreqMem.Open;
|
||||
|
||||
qFreqMem.First;
|
||||
qFreqMem.prior;
|
||||
fFirstMemId := qFreqMem.Fields[0].AsInteger;
|
||||
|
||||
c:=-1;
|
||||
setLength(MemNR,qFreqMem.RecordCount+1);
|
||||
repeat
|
||||
begin
|
||||
inc(c);
|
||||
MemNR[c]:= qFreqMem.Fields[0].AsInteger;
|
||||
if fDebugLevel>=1 then Writeln('FreqmemNR:',c,'=',MemNR[c]);
|
||||
qFreqMem.Next;
|
||||
end;
|
||||
until qFreqMem.Eof;
|
||||
|
||||
qFreqMem.Last;
|
||||
fLastMemId := qFreqMem.Fields[0].AsInteger;
|
||||
|
||||
qFreqMem.First;
|
||||
fFirstMemId := qFreqMem.Fields[0].AsInteger;
|
||||
|
||||
if fDebugLevel>=1 then Writeln('FreqmemFirst:',fFirstMemId,' FreqmemLast:',fLastMemId);
|
||||
end;
|
||||
|
||||
procedure TdmData.GetCurrentFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure TdmData.GetCurrentFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
var
|
||||
c: integer;
|
||||
begin
|
||||
if (qFreqMem.RecordCount > 0) then
|
||||
if qFreqMem.Active and (qFreqMem.RecordCount > 0) then
|
||||
begin
|
||||
freq := qFreqMem.Fields[1].AsFloat;
|
||||
mode := qFreqMem.Fields[2].AsString;
|
||||
bandwidth := qFreqMem.Fields[3].AsInteger
|
||||
bandwidth := qFreqMem.Fields[3].AsInteger;
|
||||
info := qFreqMem.Fields[4].AsString;
|
||||
frmTRXControl.edtMemNr.Font.Color:= clDefault; // May be red if previous was "None"
|
||||
if info='' then
|
||||
begin
|
||||
for c:=0 to qFreqMem.RecordCount do
|
||||
if MemNR[c]= qFreqMem.Fields[0].AsInteger then break;
|
||||
frmTRXControl.edtMemNr.Text := IntToStr(c+1)+' of '+ IntToStr(qFreqMem.RecordCount );
|
||||
end
|
||||
else frmTRXControl.edtMemNr.Text := info;
|
||||
frmTRXControl.infosetstage :=1;
|
||||
end
|
||||
else begin
|
||||
freq := 0;
|
||||
mode := 'CW';
|
||||
bandwidth := 0
|
||||
bandwidth := 0;
|
||||
frmTRXControl.edtMemNr.Font.Color:= clRed;
|
||||
frmTRXControl.edtMemNr.Text := 'None';
|
||||
frmTRXControl.infosetstage :=1;
|
||||
end;
|
||||
if fDebugLevel>=1 then Writeln('Freq:',freq,' mode:',mode,' bandwidth:',bandwidth);
|
||||
end;
|
||||
|
||||
procedure TdmData.GetPreviousFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure TdmData.GetPreviousFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
begin
|
||||
if not qFreqMem.Active then
|
||||
begin
|
||||
@ -4085,16 +4123,17 @@ begin
|
||||
else begin
|
||||
//if qFreqMem.Bof then doesn't work because when it's on the first record, it has to call Prior again to be sure that
|
||||
//it's really first - that caused user has to click twice to get on the end of the table
|
||||
if fDebugLevel>=1 then writeln('-----------UP---', qFreqMem.Fields[0].AsInteger,' ', fFirstMemId);
|
||||
if (fFirstMemId = qFreqMem.Fields[0].AsInteger) then
|
||||
qFreqMem.Last
|
||||
else
|
||||
qFreqMem.Prior
|
||||
end;
|
||||
GetCurrentFreqFromMem(freq,mode,bandwidth)
|
||||
GetCurrentFreqFromMem(freq,mode,bandwidth,info)
|
||||
end;
|
||||
|
||||
|
||||
procedure TdmData.GetNextFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer);
|
||||
procedure TdmData.GetNextFreqFromMem(var freq : Double; var mode : String; var bandwidth : Integer; var info : String);
|
||||
begin
|
||||
if not qFreqMem.Active then
|
||||
begin
|
||||
@ -4103,12 +4142,13 @@ begin
|
||||
end
|
||||
else begin
|
||||
//if qFreqMem.Eof then the same problem like with Bof()
|
||||
if fDebugLevel>=1 then writeln('-----------DN---', qFreqMem.Fields[0].AsInteger,' ', fLastMemId);
|
||||
if (fLastMemId = qFreqMem.Fields[0].AsInteger) then
|
||||
qFreqMem.First
|
||||
else
|
||||
qFreqMem.Next
|
||||
end;
|
||||
GetCurrentFreqFromMem(freq,mode,bandwidth)
|
||||
GetCurrentFreqFromMem(freq,mode,bandwidth,info)
|
||||
end;
|
||||
|
||||
|
||||
|
@ -1,85 +1,149 @@
|
||||
object frmAddRadioMemory: TfrmAddRadioMemory
|
||||
Left = 420
|
||||
Height = 204
|
||||
Top = 260
|
||||
Left = 32
|
||||
Height = 222
|
||||
Top = 235
|
||||
Width = 308
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'New memory'
|
||||
ClientHeight = 204
|
||||
ClientHeight = 222
|
||||
ClientWidth = 308
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.4.4.0'
|
||||
object Label1: TLabel
|
||||
Left = 16
|
||||
LCLVersion = '1.8.4.0'
|
||||
object lblFreq: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 12
|
||||
Height = 17
|
||||
Top = 16
|
||||
Top = 2
|
||||
Width = 112
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Frequency in kHz'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtFreq: TEdit
|
||||
Left = 16
|
||||
Height = 27
|
||||
Top = 40
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = lblFreq
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 34
|
||||
Top = 19
|
||||
Width = 192
|
||||
BorderSpacing.Left = 12
|
||||
TabOrder = 0
|
||||
Text = '0'
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 16
|
||||
object lblMode: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = edtFreq
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 17
|
||||
Top = 80
|
||||
Width = 39
|
||||
Top = 55
|
||||
Width = 36
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Mode'
|
||||
ParentColor = False
|
||||
end
|
||||
object cmbMode: TComboBox
|
||||
Left = 16
|
||||
Height = 29
|
||||
Top = 104
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = lblMode
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 34
|
||||
Top = 72
|
||||
Width = 192
|
||||
AutoComplete = True
|
||||
AutoCompleteText = [cbactEnabled, cbactEndOfLineComplete, cbactSearchAscending]
|
||||
BorderSpacing.Left = 12
|
||||
CharCase = ecUppercase
|
||||
ItemHeight = 0
|
||||
TabOrder = 1
|
||||
Text = 'CMBMODE'
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 16
|
||||
object lblWidth: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = cmbMode
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 17
|
||||
Top = 144
|
||||
Width = 102
|
||||
Top = 108
|
||||
Width = 100
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Bandwidth (Hz)'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtWidth: TEdit
|
||||
Left = 16
|
||||
Height = 27
|
||||
Top = 172
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = lblWidth
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 34
|
||||
Top = 125
|
||||
Width = 112
|
||||
BorderSpacing.Left = 12
|
||||
TabOrder = 2
|
||||
Text = '0'
|
||||
end
|
||||
object Button1: TButton
|
||||
Left = 224
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 221
|
||||
Height = 25
|
||||
Top = 16
|
||||
Top = 6
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 12
|
||||
Caption = 'OK'
|
||||
OnClick = Button1Click
|
||||
TabOrder = 3
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 224
|
||||
AnchorSideTop.Control = Button1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 221
|
||||
Height = 25
|
||||
Top = 48
|
||||
Top = 37
|
||||
Width = 75
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 12
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 4
|
||||
end
|
||||
object lblInfo: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = edtWidth
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 17
|
||||
Top = 161
|
||||
Width = 25
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Info'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtInfo: TEdit
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = lblInfo
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
Height = 34
|
||||
Top = 178
|
||||
Width = 284
|
||||
BorderSpacing.Left = 12
|
||||
MaxLength = 25
|
||||
TabOrder = 5
|
||||
end
|
||||
end
|
||||
|
@ -16,11 +16,13 @@ type
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
cmbMode: TComboBox;
|
||||
edtInfo: TEdit;
|
||||
edtFreq: TEdit;
|
||||
edtWidth: TEdit;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
lblFreq: TLabel;
|
||||
lblMode: TLabel;
|
||||
lblWidth: TLabel;
|
||||
lblInfo: TLabel;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure FormCreate(Sender : TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
|
@ -1,105 +1,157 @@
|
||||
object frmRadioMemories: TfrmRadioMemories
|
||||
Left = 476
|
||||
Height = 510
|
||||
Top = 232
|
||||
Width = 482
|
||||
Left = 120
|
||||
Height = 415
|
||||
Top = 125
|
||||
Width = 578
|
||||
Caption = 'Memories'
|
||||
ClientHeight = 510
|
||||
ClientWidth = 482
|
||||
ClientHeight = 415
|
||||
ClientWidth = 578
|
||||
OnClose = FormClose
|
||||
OnShow = FormShow
|
||||
LCLVersion = '1.4.4.0'
|
||||
LCLVersion = '1.8.4.0'
|
||||
object sgrdMem: TStringGrid
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 0
|
||||
Height = 510
|
||||
Height = 415
|
||||
Top = 0
|
||||
Width = 379
|
||||
Width = 478
|
||||
Align = alClient
|
||||
ColCount = 3
|
||||
ColCount = 4
|
||||
Columns = <
|
||||
item
|
||||
Title.Caption = 'Freq (kHz)'
|
||||
Width = 81
|
||||
end
|
||||
item
|
||||
Title.Caption = 'Mode'
|
||||
Width = 74
|
||||
end
|
||||
item
|
||||
Title.Caption = 'Bandwidth (Hz)'
|
||||
Width = 109
|
||||
end
|
||||
item
|
||||
Title.Caption = 'Info'
|
||||
Width = 211
|
||||
end>
|
||||
FixedCols = 0
|
||||
RowCount = 1
|
||||
TabOrder = 0
|
||||
OnCompareCells = sgrdMemCompareCells
|
||||
OnDblClick = sgrdMemDblClick
|
||||
OnSelectCell = sgrdMemSelectCell
|
||||
ColWidths = (
|
||||
132
|
||||
104
|
||||
115
|
||||
)
|
||||
Cells = (
|
||||
3
|
||||
0
|
||||
0
|
||||
'Freq (kHz)'
|
||||
1
|
||||
0
|
||||
'Mode'
|
||||
2
|
||||
0
|
||||
'Bandwidth (Hz)'
|
||||
81
|
||||
74
|
||||
109
|
||||
211
|
||||
)
|
||||
end
|
||||
object Panel1: TPanel
|
||||
Left = 379
|
||||
Height = 510
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = sgrdMem
|
||||
Left = 478
|
||||
Height = 415
|
||||
Top = 0
|
||||
Width = 103
|
||||
Width = 100
|
||||
Align = alRight
|
||||
Anchors = [akTop, akRight]
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 510
|
||||
ClientWidth = 103
|
||||
ClientHeight = 415
|
||||
ClientWidth = 100
|
||||
TabOrder = 1
|
||||
object Button1: TButton
|
||||
Left = 16
|
||||
object btnCancel: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnOK
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 48
|
||||
Top = 43
|
||||
Width = 75
|
||||
BorderSpacing.Top = 6
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 0
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 16
|
||||
object btnAdd: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnCancel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 128
|
||||
Top = 110
|
||||
Width = 75
|
||||
Action = acAdd
|
||||
BorderSpacing.Top = 42
|
||||
TabOrder = 1
|
||||
end
|
||||
object Button3: TButton
|
||||
Left = 16
|
||||
object btnEdit: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnAdd
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 160
|
||||
Top = 141
|
||||
Width = 75
|
||||
Action = acEdit
|
||||
BorderSpacing.Top = 6
|
||||
TabOrder = 2
|
||||
end
|
||||
object Button4: TButton
|
||||
Left = 16
|
||||
object btnDelete: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnEdit
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 200
|
||||
Top = 172
|
||||
Width = 75
|
||||
Action = acDelete
|
||||
BorderSpacing.Top = 6
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnFunction: TButton
|
||||
Left = 16
|
||||
object btnMore: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnDelAll
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 254
|
||||
Top = 258
|
||||
Width = 75
|
||||
BorderSpacing.Top = 30
|
||||
Caption = 'More...'
|
||||
OnClick = btnFunctionClick
|
||||
OnClick = btnMoreClick
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnOK: TButton
|
||||
Left = 16
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Panel1
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 16
|
||||
Top = 12
|
||||
Width = 75
|
||||
BorderSpacing.Top = 12
|
||||
Caption = 'OK'
|
||||
ModalResult = 1
|
||||
TabOrder = 5
|
||||
end
|
||||
object btnDelAll: TButton
|
||||
AnchorSideLeft.Control = btnOK
|
||||
AnchorSideTop.Control = btnDelete
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 203
|
||||
Width = 75
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'Delete All'
|
||||
OnClick = btnDelAllClick
|
||||
TabOrder = 6
|
||||
end
|
||||
end
|
||||
object acMem: TActionList
|
||||
left = 24
|
||||
|
@ -22,12 +22,13 @@ type
|
||||
acSortByFreq: TAction;
|
||||
acUp: TAction;
|
||||
acMem: TActionList;
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
Button3: TButton;
|
||||
Button4: TButton;
|
||||
btnFunction: TButton;
|
||||
btnCancel: TButton;
|
||||
btnAdd: TButton;
|
||||
btnEdit: TButton;
|
||||
btnDelete: TButton;
|
||||
btnMore: TButton;
|
||||
btnOK: TButton;
|
||||
btnDelAll: TButton;
|
||||
MenuItem1: TMenuItem;
|
||||
MenuItem2: TMenuItem;
|
||||
MenuItem3: TMenuItem;
|
||||
@ -43,32 +44,42 @@ type
|
||||
procedure acExportExecute(Sender: TObject);
|
||||
procedure acImportExecute(Sender: TObject);
|
||||
procedure acSortByFreqExecute(Sender: TObject);
|
||||
procedure btnFunctionClick(Sender: TObject);
|
||||
procedure btnDelAllClick(Sender: TObject);
|
||||
procedure btnMoreClick(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure sgrdMemCompareCells(Sender: TObject; ACol, ARow, BCol,
|
||||
BRow: Integer; var Result: integer);
|
||||
procedure sgrdMemDblClick(Sender: TObject);
|
||||
procedure sgrdMemSelectCell(Sender: TObject; aCol, aRow: Integer;
|
||||
var CanSelect: Boolean);
|
||||
private
|
||||
procedure AddToGrid(freq,mode,bandwidth : String);
|
||||
|
||||
procedure AddToGrid(freq,mode,bandwidth,info : String);
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
ShowMode : Boolean;
|
||||
end;
|
||||
|
||||
var
|
||||
frmRadioMemories: TfrmRadioMemories;
|
||||
|
||||
dcRow : integer;
|
||||
dcRowOk : boolean ;
|
||||
implementation
|
||||
{$R *.lfm}
|
||||
{ TfrmRadioMemories }
|
||||
|
||||
uses dUtils, fAddRadioMemory;
|
||||
uses dUtils, fAddRadioMemory, fTRXControl;
|
||||
|
||||
procedure TfrmRadioMemories.AddToGrid(freq,mode,bandwidth : String);
|
||||
procedure TfrmRadioMemories.AddToGrid(freq,mode,bandwidth,info : String);
|
||||
begin
|
||||
sgrdMem.RowCount := sgrdMem.RowCount + 1;
|
||||
sgrdMem.Cells[0,sgrdMem.RowCount-1] := FloatToStrF(StrToFloat(freq),ffFixed,15,3);
|
||||
sgrdMem.Cells[1,sgrdMem.RowCount-1] := mode;
|
||||
sgrdMem.Cells[2,sgrdMem.RowCount-1] := bandwidth
|
||||
sgrdMem.Cells[2,sgrdMem.RowCount-1] := bandwidth;
|
||||
sgrdMem.Cells[3,sgrdMem.RowCount-1] := info;
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.acAddExecute(Sender: TObject);
|
||||
@ -77,7 +88,7 @@ begin
|
||||
try
|
||||
if frmAddRadioMemory.ShowModal = mrOK then
|
||||
begin
|
||||
AddToGrid(frmAddRadioMemory.edtFreq.Text,frmAddRadioMemory.cmbMode.Text,frmAddRadioMemory.edtWidth.Text)
|
||||
AddToGrid(frmAddRadioMemory.edtFreq.Text,frmAddRadioMemory.cmbMode.Text,frmAddRadioMemory.edtWidth.Text,frmAddRadioMemory.edtInfo.Text)
|
||||
end
|
||||
finally
|
||||
FreeAndNil(frmAddRadioMemory)
|
||||
@ -92,6 +103,18 @@ begin
|
||||
sgrdMem.DeleteRow(sgrdMem.Row)
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.btnDelAllClick(Sender: TObject);
|
||||
begin
|
||||
if (sgrdMem.RowCount < 2) then
|
||||
Application.MessageBox('There is nothing to delete','Info...',mb_ok+mb_IconInformation)
|
||||
else
|
||||
begin
|
||||
repeat
|
||||
sgrdMem.DeleteRow(sgrdMem.Row)
|
||||
until (sgrdMem.RowCount < 2) ;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.acEditExecute(Sender: TObject);
|
||||
begin
|
||||
frmAddRadioMemory := TfrmAddRadioMemory.Create(frmRadioMemories);
|
||||
@ -99,11 +122,13 @@ begin
|
||||
frmAddRadioMemory.edtFreq.Text := sgrdMem.Cells[0,sgrdMem.Row];
|
||||
frmAddRadioMemory.cmbMode.Text := sgrdMem.Cells[1,sgrdMem.Row];
|
||||
frmAddRadioMemory.edtWidth.Text := sgrdMem.Cells[2,sgrdMem.Row];
|
||||
frmAddRadioMemory.edtInfo.Text := sgrdMem.Cells[3,sgrdMem.Row];
|
||||
if frmAddRadioMemory.ShowModal = mrOK then
|
||||
begin
|
||||
sgrdMem.Cells[0,sgrdMem.Row] := FloatToStrF(StrToFloat(frmAddRadioMemory.edtFreq.Text),ffFixed,15,6);
|
||||
sgrdMem.Cells[1,sgrdMem.Row] := frmAddRadioMemory.cmbMode.Text;
|
||||
sgrdMem.Cells[2,sgrdMem.Row] := frmAddRadioMemory.edtWidth.Text
|
||||
sgrdMem.Cells[2,sgrdMem.Row] := frmAddRadioMemory.edtWidth.Text;
|
||||
sgrdMem.Cells[3,sgrdMem.Row] := frmAddRadioMemory.edtInfo.Text
|
||||
end
|
||||
finally
|
||||
FreeAndNil(frmAddRadioMemory)
|
||||
@ -120,7 +145,7 @@ begin
|
||||
l := TStringList.Create;
|
||||
try
|
||||
for i:=1 to sgrdMem.RowCount-1 do
|
||||
l.Add(sgrdMem.Cells[0,i]+';'+sgrdMem.Cells[1,i]+';'+sgrdMem.Cells[2,i]);
|
||||
l.Add(sgrdMem.Cells[0,i]+';'+sgrdMem.Cells[1,i]+';'+sgrdMem.Cells[2,i]+';'+sgrdMem.Cells[3,i]);
|
||||
|
||||
l.SaveToFile(dlgSave.FileName);
|
||||
ShowMessage('File saved to '+dlgSave.FileName)
|
||||
@ -133,13 +158,14 @@ end;
|
||||
procedure TfrmRadioMemories.acImportExecute(Sender: TObject);
|
||||
const
|
||||
C_ERR = 'File has wrong format at line %d'+LineEnding+LineEnding+
|
||||
'Right format is freq(in kHz);mode;bandwidth' +LineEnding+LineEnding+ 'e.g.'+LineEnding+LineEnding+
|
||||
'10120.0;CW;300';
|
||||
'Right format is freq(in kHz);mode;bandwidth,info' +LineEnding+LineEnding+ 'e.g.'+LineEnding+LineEnding+
|
||||
'10120.0;CW;300.text';
|
||||
|
||||
type TFreq = record
|
||||
freq : String[20];
|
||||
mode : String[10];
|
||||
width : String[8];
|
||||
info : String[25];
|
||||
end;
|
||||
|
||||
var
|
||||
@ -163,7 +189,7 @@ begin
|
||||
inc(i);
|
||||
a := dmUtils.Explode(';',l);
|
||||
|
||||
if (Length(a)<>3) then
|
||||
if (Length(a)<>4) then
|
||||
begin
|
||||
Application.MessageBox(PChar(Format(C_ERR,[i])),'Error...',mb_OK+mb_IconError);
|
||||
exit
|
||||
@ -190,12 +216,13 @@ begin
|
||||
SetLength(d,i);
|
||||
d[i-1].freq := a[0];
|
||||
d[i-1].mode := a[1];
|
||||
d[i-1].width := a[2]
|
||||
d[i-1].width := a[2];
|
||||
d[i-1].info := a[3];
|
||||
end;
|
||||
|
||||
for i:= 0 to Length(d)-1 do
|
||||
begin
|
||||
AddToGrid(d[i].freq, d[i].mode, d[i].width)
|
||||
AddToGrid(d[i].freq, d[i].mode, d[i].width,d[i].info)
|
||||
end;
|
||||
|
||||
ShowMessage('File has been imported')
|
||||
@ -210,25 +237,26 @@ begin
|
||||
sgrdMem.SortColRow(true, 0, sgrdMem.FixedRows, sgrdMem.RowCount-1)
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.btnFunctionClick(Sender: TObject);
|
||||
procedure TfrmRadioMemories.btnMoreClick(Sender: TObject);
|
||||
var
|
||||
p : TPoint;
|
||||
begin
|
||||
p.x := 10;
|
||||
p.y := 10;
|
||||
p := btnFunction.ClientToScreen(p);
|
||||
p := btnMore.ClientToScreen(p);
|
||||
popMem.PopUp(p.x, p.y)
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
begin
|
||||
dmUtils.SaveWindowPos(frmRadioMemories)
|
||||
dmUtils.SaveWindowPos(frmRadioMemories);
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.FormShow(Sender: TObject);
|
||||
begin
|
||||
dmUtils.LoadWindowPos(frmRadioMemories)
|
||||
dmUtils.LoadWindowPos(frmRadioMemories);
|
||||
ShowMode := False;
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.sgrdMemCompareCells(Sender: TObject; ACol, ARow,
|
||||
@ -239,5 +267,40 @@ begin
|
||||
result := -result
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.sgrdMemDblClick(Sender: TObject);
|
||||
var //set rig frequeny from memory table with doubleclick
|
||||
freq :Double;
|
||||
mode :String;
|
||||
bandwidth :Integer;
|
||||
info :String;
|
||||
begin
|
||||
if dcRowOk then
|
||||
begin
|
||||
freq := StrToFloat(sgrdMem.Cells[0,dcRow]);
|
||||
mode := sgrdMem.Cells[1,dcRow];
|
||||
bandwidth := StrToInt(sgrdMem.Cells[2,dcRow]);
|
||||
info := sgrdMem.Cells[3,dcRow];
|
||||
if freq > 0 then
|
||||
Begin
|
||||
frmTRXControl.SetFreqModeBandWidth(freq,mode,bandwidth);
|
||||
if (dcRow = sgrdMem.RowCount-1) then
|
||||
frmTRXControl.edtMemNr.Font.Color:= clFuchsia
|
||||
else
|
||||
frmTRXControl.edtMemNr.Font.Color:= clDefault;
|
||||
if info='' then frmTRXControl.edtMemNr.Text := 'M '+IntToStr(dcRow+1)
|
||||
else frmTRXControl.edtMemNr.Text := info;
|
||||
frmTRXControl.infosetstage :=1;
|
||||
end;
|
||||
dcRowOk :=false; //we handeld this one
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmRadioMemories.sgrdMemSelectCell(Sender: TObject; aCol,
|
||||
aRow: Integer; var CanSelect: Boolean);
|
||||
begin
|
||||
dcRow:=aRow; //remember clicked row and handle it with ondblclick
|
||||
dcRowOk :=true;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
object frmTRXControl: TfrmTRXControl
|
||||
Left = 804
|
||||
Height = 277
|
||||
Top = 52
|
||||
Width = 307
|
||||
Left = 877
|
||||
Height = 321
|
||||
Top = 3
|
||||
Width = 284
|
||||
Anchors = []
|
||||
Caption = 'TRX control'
|
||||
ClientHeight = 254
|
||||
ClientWidth = 307
|
||||
ClientHeight = 296
|
||||
ClientWidth = 284
|
||||
Icon.Data = {
|
||||
BE1000000000010001002020000001002000A810000016000000280000002000
|
||||
0000400000000100200000000000001000006400000064000000000000000000
|
||||
@ -153,158 +153,159 @@ object frmTRXControl: TfrmTRXControl
|
||||
OnKeyDown = FormKeyDown
|
||||
OnKeyUp = FormKeyUp
|
||||
OnShow = FormShow
|
||||
LCLVersion = '1.8.2.0'
|
||||
LCLVersion = '2.0.0.4'
|
||||
object gbMode: TGroupBox
|
||||
Left = 240
|
||||
Height = 254
|
||||
Top = 0
|
||||
Width = 67
|
||||
Align = alRight
|
||||
AnchorSideLeft.Control = gbVfo
|
||||
AnchorSideTop.Control = gbVfo
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 205
|
||||
Height = 243
|
||||
Top = 48
|
||||
Width = 78
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 1
|
||||
Caption = ' Mode '
|
||||
ClientHeight = 238
|
||||
ClientWidth = 65
|
||||
ClientHeight = 225
|
||||
ClientWidth = 76
|
||||
TabOrder = 0
|
||||
object btnCW: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideTop.Control = gbMode
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 1
|
||||
Top = 0
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
BorderSpacing.Left = 13
|
||||
Caption = 'CW'
|
||||
OnClick = btnCWClick
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnSSB: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnCW
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 27
|
||||
Top = 25
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'SSB'
|
||||
OnClick = btnSSBClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnRTTY: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnSSB
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 53
|
||||
Top = 50
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'RTTY'
|
||||
OnClick = btnRTTYClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnAM: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnRTTY
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 79
|
||||
Top = 75
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'AM'
|
||||
OnClick = btnAMClick
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnFM: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnAM
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 105
|
||||
Top = 100
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'FM'
|
||||
OnClick = btnFMClick
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnMemUp: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnFM
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 106
|
||||
Top = 125
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'M up'
|
||||
OnClick = btnMemUpClick
|
||||
TabOrder = 5
|
||||
end
|
||||
object btnMemDwn: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnMemUp
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 132
|
||||
Top = 150
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'M dwn'
|
||||
OnClick = btnMemDwnClick
|
||||
TabOrder = 6
|
||||
end
|
||||
object btnMemWri: TButton
|
||||
AnchorSideLeft.Control = gbMode
|
||||
AnchorSideLeft.Control = btnCW
|
||||
AnchorSideTop.Control = btnMemDwn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 6
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 158
|
||||
Top = 182
|
||||
Width = 51
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
BorderSpacing.Top = 7
|
||||
Caption = 'M Wri'
|
||||
Font.Color = clRed
|
||||
OnClick = btnMemWriClick
|
||||
ParentFont = False
|
||||
TabOrder = 7
|
||||
end
|
||||
end
|
||||
object pnlMain: TPanel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 0
|
||||
Height = 254
|
||||
Height = 296
|
||||
Top = 0
|
||||
Width = 240
|
||||
Align = alClient
|
||||
Width = 200
|
||||
Align = alLeft
|
||||
BevelOuter = bvNone
|
||||
Caption = 'pnlMain'
|
||||
ClientHeight = 254
|
||||
ClientWidth = 240
|
||||
ClientHeight = 296
|
||||
ClientWidth = 200
|
||||
TabOrder = 1
|
||||
object gbVfo: TGroupBox
|
||||
Left = 0
|
||||
Height = 72
|
||||
object gbFreq: TGroupBox
|
||||
AnchorSideLeft.Control = pnlMain
|
||||
AnchorSideTop.Control = pnlMain
|
||||
Left = 1
|
||||
Height = 59
|
||||
Top = 0
|
||||
Width = 240
|
||||
Width = 199
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 1
|
||||
Caption = ' Freq '
|
||||
ClientHeight = 56
|
||||
ClientWidth = 238
|
||||
ClientHeight = 41
|
||||
ClientWidth = 197
|
||||
TabOrder = 0
|
||||
object lblFreq: TLabel
|
||||
AnchorSideTop.Control = gbVfo
|
||||
AnchorSideRight.Control = gbVfo
|
||||
AnchorSideTop.Control = gbFreq
|
||||
AnchorSideRight.Control = gbFreq
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = -3
|
||||
Left = -44
|
||||
Height = 49
|
||||
Top = 1
|
||||
Width = 235
|
||||
@ -320,43 +321,21 @@ object frmTRXControl: TfrmTRXControl
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnVFOA: TButton
|
||||
AnchorSideLeft.Control = gbVfo
|
||||
AnchorSideTop.Control = gbVfo
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 1
|
||||
Width = 32
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'A'
|
||||
TabOrder = 0
|
||||
Visible = False
|
||||
end
|
||||
object btnVFOB: TButton
|
||||
AnchorSideLeft.Control = gbVfo
|
||||
AnchorSideTop.Control = btnVFOA
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 25
|
||||
Top = 27
|
||||
Width = 32
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 1
|
||||
Caption = 'B'
|
||||
TabOrder = 1
|
||||
Visible = False
|
||||
end
|
||||
end
|
||||
object gbBand: TGroupBox
|
||||
Left = 0
|
||||
Height = 156
|
||||
Top = 72
|
||||
Width = 240
|
||||
AnchorSideLeft.Control = pnlMain
|
||||
AnchorSideTop.Control = gbInfo
|
||||
Left = 1
|
||||
Height = 159
|
||||
Top = 111
|
||||
Width = 199
|
||||
Align = alClient
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
BorderSpacing.Left = 1
|
||||
BorderSpacing.Top = 3
|
||||
Caption = ' Band '
|
||||
ClientHeight = 140
|
||||
ClientWidth = 238
|
||||
ClientHeight = 141
|
||||
ClientWidth = 197
|
||||
TabOrder = 1
|
||||
object btn160m: TButton
|
||||
AnchorSideLeft.Control = gbBand
|
||||
@ -422,7 +401,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = btn15m
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 91
|
||||
Left = 70
|
||||
Height = 25
|
||||
Top = 84
|
||||
Width = 56
|
||||
@ -437,7 +416,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = btn17m
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 91
|
||||
Left = 70
|
||||
Height = 25
|
||||
Top = 58
|
||||
Width = 56
|
||||
@ -452,7 +431,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = btn20m
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 91
|
||||
Left = 70
|
||||
Height = 25
|
||||
Top = 32
|
||||
Width = 56
|
||||
@ -466,7 +445,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideLeft.Control = gbBand
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = gbBand
|
||||
Left = 91
|
||||
Left = 70
|
||||
Height = 25
|
||||
Top = 6
|
||||
Width = 56
|
||||
@ -480,7 +459,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Control = gbBand
|
||||
AnchorSideRight.Control = gbBand
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 135
|
||||
Height = 25
|
||||
Top = 6
|
||||
Width = 56
|
||||
@ -497,7 +476,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbBand
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 135
|
||||
Height = 25
|
||||
Top = 32
|
||||
Width = 56
|
||||
@ -514,7 +493,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbBand
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 135
|
||||
Height = 25
|
||||
Top = 84
|
||||
Width = 56
|
||||
@ -531,7 +510,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbBand
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 135
|
||||
Height = 25
|
||||
Top = 58
|
||||
Width = 56
|
||||
@ -544,17 +523,19 @@ object frmTRXControl: TfrmTRXControl
|
||||
TabOrder = 11
|
||||
end
|
||||
object pnlPower: TPanel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideLeft.Control = gbBand
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = gbBand
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 30
|
||||
Top = 110
|
||||
Width = 238
|
||||
Align = alBottom
|
||||
Top = 111
|
||||
Width = 197
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 30
|
||||
ClientWidth = 238
|
||||
ClientWidth = 197
|
||||
TabOrder = 12
|
||||
Visible = False
|
||||
object btPon: TButton
|
||||
@ -573,7 +554,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideLeft.Control = pnlPower
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = pnlPower
|
||||
Left = 91
|
||||
Left = 70
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 56
|
||||
@ -586,7 +567,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Control = pnlPower
|
||||
AnchorSideRight.Control = pnlPower
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 135
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 56
|
||||
@ -599,14 +580,19 @@ object frmTRXControl: TfrmTRXControl
|
||||
end
|
||||
end
|
||||
object pnlRig: TPanel
|
||||
AnchorSideLeft.Control = pnlMain
|
||||
AnchorSideRight.Control = gbInfo
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = pnlMain
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 26
|
||||
Top = 228
|
||||
Width = 240
|
||||
Top = 270
|
||||
Width = 200
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 26
|
||||
ClientWidth = 240
|
||||
ClientWidth = 200
|
||||
ParentBidiMode = False
|
||||
TabOrder = 2
|
||||
object rbRadio1: TRadioButton
|
||||
@ -629,7 +615,7 @@ object frmTRXControl: TfrmTRXControl
|
||||
AnchorSideTop.Control = pnlRig
|
||||
AnchorSideRight.Control = pnlRig
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 176
|
||||
Left = 136
|
||||
Height = 23
|
||||
Top = 1
|
||||
Width = 57
|
||||
@ -643,36 +629,116 @@ object frmTRXControl: TfrmTRXControl
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object gbInfo: TGroupBox
|
||||
AnchorSideLeft.Control = pnlMain
|
||||
AnchorSideTop.Control = gbFreq
|
||||
Left = 1
|
||||
Height = 46
|
||||
Top = 62
|
||||
Width = 199
|
||||
Align = alTop
|
||||
BorderSpacing.Left = 1
|
||||
BorderSpacing.Top = 3
|
||||
Caption = 'Mem Info'
|
||||
ClientHeight = 28
|
||||
ClientWidth = 197
|
||||
TabOrder = 3
|
||||
object edtMemNr: TEdit
|
||||
AnchorSideLeft.Control = gbInfo
|
||||
AnchorSideTop.Control = gbInfo
|
||||
AnchorSideRight.Control = gbInfo
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Cursor = crNone
|
||||
Left = 6
|
||||
Height = 27
|
||||
Top = 0
|
||||
Width = 185
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = False
|
||||
AutoSelect = False
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Right = 6
|
||||
DragCursor = crNone
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
object gbVfo: TGroupBox
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = pnlMain
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 205
|
||||
Height = 48
|
||||
Top = 0
|
||||
Width = 78
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 1
|
||||
Caption = 'Vfo'
|
||||
ClientHeight = 30
|
||||
ClientWidth = 76
|
||||
TabOrder = 2
|
||||
object btnVFOA: TButton
|
||||
AnchorSideLeft.Control = gbVfo
|
||||
AnchorSideTop.Control = gbVfo
|
||||
Left = 13
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 25
|
||||
BorderSpacing.Left = 13
|
||||
Caption = 'A'
|
||||
OnClick = btnVFOAClick
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnVFOB: TButton
|
||||
AnchorSideLeft.Control = btnVFOA
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnVFOA
|
||||
Left = 38
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 25
|
||||
Caption = 'B'
|
||||
OnClick = btnVFOBClick
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object tmrRadio: TTimer
|
||||
Enabled = False
|
||||
Interval = 500
|
||||
OnTimer = tmrRadioTimer
|
||||
left = 64
|
||||
top = 48
|
||||
left = 80
|
||||
top = 16
|
||||
end
|
||||
object mnuMem: TMainMenu
|
||||
left = 104
|
||||
top = 48
|
||||
object MenuItem1: TMenuItem
|
||||
left = 40
|
||||
top = 16
|
||||
object mnuPref: TMenuItem
|
||||
Caption = 'Preferences'
|
||||
object MenuItem2: TMenuItem
|
||||
Action = acAddModMem
|
||||
object mnuOpenMem: TMenuItem
|
||||
Caption = 'Open memory list'
|
||||
OnClick = acAddModMemExecute
|
||||
end
|
||||
object MenuItem3: TMenuItem
|
||||
object mnuAddMod: TMenuItem
|
||||
Action = acAddModMem
|
||||
Caption = 'Add/Modify memories'
|
||||
end
|
||||
object mnuShowPwr: TMenuItem
|
||||
Caption = 'Show Pwr buttons'
|
||||
Checked = True
|
||||
OnClick = MenuItem3Click
|
||||
OnClick = mnuShowPwrClick
|
||||
end
|
||||
object MenuItem4: TMenuItem
|
||||
object mnuProgPref: TMenuItem
|
||||
Caption = 'Preferences'
|
||||
OnClick = MenuItem4Click
|
||||
OnClick = mnuProgPrefClick
|
||||
end
|
||||
end
|
||||
end
|
||||
object acMem: TActionList
|
||||
left = 144
|
||||
top = 48
|
||||
left = 56
|
||||
top = 16
|
||||
object acAddModMem: TAction
|
||||
Caption = 'Add/Modify memory'
|
||||
OnExecute = acAddModMemExecute
|
||||
|
@ -55,15 +55,19 @@ type
|
||||
btPoff: TButton;
|
||||
btPon: TButton;
|
||||
btPstby: TButton;
|
||||
edtMemNr: TEdit;
|
||||
gbBand: TGroupBox;
|
||||
gbVfo: TGroupBox;
|
||||
gbFreq: TGroupBox;
|
||||
gbMode: TGroupBox;
|
||||
gbInfo: TGroupBox;
|
||||
gbVfo: TGroupBox;
|
||||
GroupBox4: TGroupBox;
|
||||
lblFreq: TLabel;
|
||||
MenuItem1: TMenuItem;
|
||||
MenuItem2: TMenuItem;
|
||||
MenuItem3: TMenuItem;
|
||||
MenuItem4: TMenuItem;
|
||||
mnuOpenMem: TMenuItem;
|
||||
mnuPref: TMenuItem;
|
||||
mnuAddMod: TMenuItem;
|
||||
mnuShowPwr: TMenuItem;
|
||||
mnuProgPref: TMenuItem;
|
||||
mnuMem: TMainMenu;
|
||||
pnlRig: TPanel;
|
||||
pnlMain: TPanel;
|
||||
@ -75,6 +79,8 @@ type
|
||||
procedure btnMemWriClick(Sender: TObject);
|
||||
procedure btnMemDwnClick(Sender: TObject);
|
||||
procedure btnMemUpClick(Sender: TObject);
|
||||
procedure btnVFOAClick(Sender: TObject);
|
||||
procedure btnVFOBClick(Sender: TObject);
|
||||
procedure btPoffClick(Sender: TObject);
|
||||
procedure btPonClick(Sender: TObject);
|
||||
procedure btPstbyClick(Sender: TObject);
|
||||
@ -102,8 +108,8 @@ type
|
||||
procedure btnFMClick(Sender: TObject);
|
||||
procedure btnRTTYClick(Sender: TObject);
|
||||
procedure btnSSBClick(Sender: TObject);
|
||||
procedure MenuItem3Click(Sender: TObject);
|
||||
procedure MenuItem4Click(Sender: TObject);
|
||||
procedure mnuShowPwrClick(Sender: TObject);
|
||||
procedure mnuProgPrefClick(Sender: TObject);
|
||||
procedure rbRadio1Click(Sender: TObject);
|
||||
procedure rbRadio2Click(Sender: TObject);
|
||||
procedure tmrRadioTimer(Sender : TObject);
|
||||
@ -143,6 +149,8 @@ type
|
||||
}
|
||||
AutoMode : Boolean;
|
||||
//Running : Boolean;
|
||||
infosetstage : integer;
|
||||
infosetfreq : String;
|
||||
procedure SynTRX;
|
||||
|
||||
function GetFreqFromModeBand(band : Integer;smode : String) : String;
|
||||
@ -166,6 +174,7 @@ type
|
||||
procedure LoadButtonCaptions;
|
||||
procedure SetDebugMode(DebugMode : Boolean);
|
||||
procedure LoadBandButtons;
|
||||
function ListModeClose : Boolean;
|
||||
procedure HLTune(start:boolean);
|
||||
end;
|
||||
|
||||
@ -225,6 +234,7 @@ var
|
||||
ModeWas : String; //store mode while tuning with AM
|
||||
BwWas : integer;
|
||||
Tuning : Boolean = false;
|
||||
MemRelated : boolean;
|
||||
|
||||
implementation
|
||||
{$R *.lfm}
|
||||
@ -342,6 +352,8 @@ var
|
||||
b : String = '';
|
||||
f : Double;
|
||||
m : String;
|
||||
oldG : integer;
|
||||
mG : integer;
|
||||
begin
|
||||
if Assigned(radio) then
|
||||
begin
|
||||
@ -353,6 +365,23 @@ begin
|
||||
lblFreq.Caption := FormatFloat(empty_freq+';;',f);
|
||||
UpdateModeButtons(m);
|
||||
ClearButtonsColor;
|
||||
// this waits5 rig polls before lock freq set by memory. After that if freq chanfǵes (by vfo knob) clean info text
|
||||
// stupid but works quite well
|
||||
case infosetstage of
|
||||
4: begin
|
||||
infosetfreq:= lblFreq.Caption;
|
||||
inc(infosetstage);
|
||||
end;
|
||||
5: begin
|
||||
if (infosetfreq <> lblFreq.Caption) then
|
||||
begin
|
||||
edtMemNr.Text:='';
|
||||
infosetstage:=0;
|
||||
end;
|
||||
end;
|
||||
else
|
||||
if ((infosetstage > 0) and (infosetstage < 4)) then inc(infosetstage);
|
||||
end;
|
||||
if (f = 0) then
|
||||
begin
|
||||
if cqrini.ReadBool('BandMap','UseNewQSOFreqMode',False) then
|
||||
@ -377,14 +406,35 @@ begin
|
||||
end;
|
||||
|
||||
m := radio.GetRawMode;
|
||||
if (m<>old_mode) then
|
||||
begin
|
||||
if not (((old_mode='LSB') or (old_mode='USB')) and ((m='LSB') or (m='USB'))) then
|
||||
begin
|
||||
old_mode := m;
|
||||
dmData.OpenFreqMemories(old_mode)
|
||||
end
|
||||
end;
|
||||
|
||||
if MemRelated <> cqrini.ReadBool('TRX','MemModeRelated',False) then //user changed settings
|
||||
begin
|
||||
MemRelated := cqrini.ReadBool('TRX','MemModeRelated',False);
|
||||
dmData.OpenFreqMemories(m);
|
||||
end
|
||||
else
|
||||
begin
|
||||
if MemRelated then //use related settings;
|
||||
begin
|
||||
//Group1 'LSB','USB','FM','AM'
|
||||
//Group2 'RTTY','PKTLSB','PKTUSB','PKTFM','DATA'
|
||||
case old_mode of
|
||||
'LSB','USB','FM','AM' : oldG:=1;
|
||||
'RTTY','PKTLSB','PKTUSB','PKTFM','DATA' : oldG:=2;
|
||||
else oldG:=0; //CW or unlisted
|
||||
end;
|
||||
case m of
|
||||
'LSB','USB','FM','AM' : mG:=1;
|
||||
'RTTY','PKTLSB','PKTUSB','PKTFM','DATA' : mG:=2;
|
||||
else mG:=0; //CW or unlisted
|
||||
end;
|
||||
if (oldG<>mG)then
|
||||
begin
|
||||
old_mode := m;
|
||||
dmData.OpenFreqMemories(old_mode)
|
||||
end
|
||||
end;
|
||||
end;
|
||||
|
||||
if (b='') then
|
||||
b := dmUtils.GetBandFromFreq(lblFreq.Caption);
|
||||
@ -468,6 +518,7 @@ begin
|
||||
rbRadio1.Caption := cqrini.ReadString('TRX1','Desc','Radio 1');
|
||||
rbRadio2.Caption := cqrini.ReadString('TRX2','Desc','Radio 2');
|
||||
old_mode := '';
|
||||
MemRelated := cqrini.ReadBool('TRX','MemModeRelated',False);
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn10mClick(Sender: TObject);
|
||||
@ -479,7 +530,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(8,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn10m.Font.Color := clRed;
|
||||
btn10m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn12mClick(Sender: TObject);
|
||||
@ -491,7 +543,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(7,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn12m.Font.Color := clRed;
|
||||
btn12m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn15mClick(Sender: TObject);
|
||||
@ -503,7 +556,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(6,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn15m.Font.Color := clRed;
|
||||
btn15m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn160mClick(Sender: TObject);
|
||||
@ -515,7 +569,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(0,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn160m.Font.Color := clRed;
|
||||
btn160m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn17mClick(Sender: TObject);
|
||||
@ -527,7 +582,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(5,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn17m.Font.Color := clRed;
|
||||
btn17m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn20mClick(Sender: TObject);
|
||||
@ -539,7 +595,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(4,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn20m.Font.Color := clRed;
|
||||
btn20m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn2mClick(Sender: TObject);
|
||||
@ -551,7 +608,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(10,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn2m.Font.Color := clRed;
|
||||
btn2m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn30mClick(Sender: TObject);
|
||||
@ -563,7 +621,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(3,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn30m.Font.Color := clRed;
|
||||
btn30m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn40mClick(Sender: TObject);
|
||||
@ -575,7 +634,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(2,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn40m.Font.Color := clRed;
|
||||
btn40m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn6mClick(Sender: TObject);
|
||||
@ -587,7 +647,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(9,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn6m.Font.Color := clRed;
|
||||
btn6m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn70cmClick(Sender: TObject);
|
||||
@ -599,7 +660,8 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(11,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn70cm.Font.Color := clRed;
|
||||
btn70cm.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btn80mClick(Sender: TObject);
|
||||
@ -611,33 +673,28 @@ begin
|
||||
mode := GetActualMode;
|
||||
freq := GetFreqFromModeBand(1,mode);
|
||||
SetModeFreq(mode,freq);
|
||||
btn80m.Font.Color := clRed;
|
||||
btn80m.Font.Color := clRed;
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnAMClick(Sender: TObject);
|
||||
procedure TfrmTRXControl.btnVFOAClick(Sender: TObject);
|
||||
begin
|
||||
SetMode('AM',GetBandWidth('AM'))
|
||||
if Assigned(radio) then radio.SetCurrVfo(VFOA);
|
||||
end;
|
||||
procedure TfrmTRXControl.btnVFOBClick(Sender: TObject);
|
||||
begin
|
||||
if Assigned(radio) then radio.SetCurrVfo(VFOB);
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnCWClick(Sender: TObject);
|
||||
begin
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
SetMode('CW',GetBandWidth('CW'))
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnFMClick(Sender: TObject);
|
||||
begin
|
||||
SetMode('FM',GetBandWidth('FM'))
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnRTTYClick(Sender: TObject);
|
||||
begin
|
||||
SetMode('RTTY',GetBandWidth('RTTY'))
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnSSBClick(Sender: TObject);
|
||||
var
|
||||
tmp : Currency;
|
||||
begin
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
if not TryStrToCurr(lblFreq.Caption,tmp) then
|
||||
SetMode('LSB',GetBandWidth('SSB'))
|
||||
else begin
|
||||
@ -651,24 +708,39 @@ begin
|
||||
end
|
||||
end
|
||||
end;
|
||||
procedure TfrmTRXControl.btnRTTYClick(Sender: TObject);
|
||||
begin
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
SetMode('RTTY',GetBandWidth('RTTY'))
|
||||
end;
|
||||
procedure TfrmTRXControl.btnAMClick(Sender: TObject);
|
||||
begin
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
SetMode('AM',GetBandWidth('AM'))
|
||||
end;
|
||||
procedure TfrmTRXControl.btnFMClick(Sender: TObject);
|
||||
begin
|
||||
frmTRXControl.edtMemNr.Text := ''; //clear memo nr display if any text from last M push
|
||||
SetMode('FM',GetBandWidth('FM'))
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.MenuItem3Click(Sender: TObject);
|
||||
procedure TfrmTRXControl.mnuShowPwrClick(Sender: TObject);
|
||||
begin
|
||||
if pnlPower.Visible then
|
||||
Begin
|
||||
pnlPower.Visible:= false;
|
||||
Menuitem3.Checked:= false;
|
||||
mnuShowPwr.Checked:= false;
|
||||
end
|
||||
else
|
||||
Begin
|
||||
pnlPower.Visible:= true;
|
||||
btPonClick(nil); //setting buttons visible sends PwrOn to sync button colors
|
||||
Menuitem3.Checked:= true;
|
||||
mnuShowPwr.Checked:= true;
|
||||
end;
|
||||
cqrini.WriteBool('TRX','PowerButtons',pnlPower.Visible);
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.MenuItem4Click(Sender: TObject);
|
||||
procedure TfrmTRXControl.mnuProgPrefClick(Sender: TObject);
|
||||
begin
|
||||
cqrini.WriteInteger('Pref', 'ActPageIdx', 5); //set DXCuster tab active. Number may change if preferences page change
|
||||
frmNewQSO.acPreferences.Execute
|
||||
@ -696,20 +768,49 @@ begin
|
||||
thRig.Terminate;
|
||||
dmUtils.SaveWindowPos(frmTRXControl);
|
||||
end;
|
||||
function TfrmTRXControl.ListModeClose : boolean;
|
||||
|
||||
Begin
|
||||
Result :=false;
|
||||
if (frmRadioMemories <> nil) then
|
||||
if (frmRadioMemories.ShowMode) then //is open in show list mode
|
||||
begin
|
||||
FreeAndNil(frmRadioMemories);
|
||||
Result :=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.acAddModMemExecute(Sender: TObject);
|
||||
|
||||
begin
|
||||
frmRadioMemories := TfrmRadioMemories.Create(frmTRXControl);
|
||||
try
|
||||
dmData.LoadFreqMemories(frmRadioMemories.sgrdMem);
|
||||
frmRadioMemories.ShowModal;
|
||||
if frmRadioMemories.ModalResult = mrOK then
|
||||
begin
|
||||
dmData.StoreFreqMemories(frmRadioMemories.sgrdMem)
|
||||
end
|
||||
finally
|
||||
FreeAndNil(frmRadioMemories)
|
||||
end
|
||||
ListModeClose;
|
||||
frmRadioMemories := TfrmRadioMemories.Create(frmTRXControl);
|
||||
if Sender = mnuOpenMem then //show only
|
||||
Begin
|
||||
frmRadioMemories.Show;
|
||||
frmRadioMemories.Panel1.Visible:=false;
|
||||
frmRadioMemories.ShowMode := True;
|
||||
try
|
||||
dmData.LoadFreqMemories(frmRadioMemories.sgrdMem);
|
||||
except
|
||||
on E: Exception do
|
||||
ShowMessage( 'Could not load memories: '+ E.ClassName + #13#10 + E.Message );
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
try
|
||||
dmData.LoadFreqMemories(frmRadioMemories.sgrdMem);
|
||||
frmRadioMemories.ShowModal;
|
||||
if frmRadioMemories.ModalResult = mrOK then
|
||||
begin
|
||||
dmData.StoreFreqMemories(frmRadioMemories.sgrdMem)
|
||||
end
|
||||
finally
|
||||
FreeAndNil(frmRadioMemories);
|
||||
end;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.btnMemWriClick(Sender: TObject);
|
||||
@ -724,12 +825,13 @@ begin
|
||||
Dfreq := radio.GetFreqkHz;
|
||||
if Dfreq > 0 then
|
||||
begin
|
||||
ListModeClose;
|
||||
frmRadioMemories := TfrmRadioMemories.Create(frmTRXControl);
|
||||
try
|
||||
dmData.LoadFreqMemories(frmRadioMemories.sgrdMem);
|
||||
bandwidth:= radio.GetPassOnly;
|
||||
mode := radio.GetRawMode;
|
||||
freq := FloatToStrF(Dfreq,ffFixed,15,0);
|
||||
freq := FloatToStrF(Dfreq,ffGeneral,15,0);
|
||||
if (mode<>'') then
|
||||
begin
|
||||
frmRadioMemories.sgrdMem.RowCount := frmRadioMemories.sgrdMem.RowCount + 1;
|
||||
@ -737,11 +839,13 @@ begin
|
||||
frmRadioMemories.sgrdMem.Cells[1,frmRadioMemories.sgrdMem.RowCount-1] := mode;
|
||||
frmRadioMemories.sgrdMem.Cells[2,frmRadioMemories.sgrdMem.RowCount-1] := IntToStr(bandwidth);
|
||||
dmData.StoreFreqMemories(frmRadioMemories.sgrdMem);
|
||||
lblFreq.Caption:='MemW OK';
|
||||
edtMemNr.Font.Color:= clRed;
|
||||
edtMemNr.Text:='MW ok';
|
||||
infosetstage:=1;
|
||||
end
|
||||
finally
|
||||
FreeAndNil(frmRadioMemories)
|
||||
end
|
||||
FreeAndNil(frmRadioMemories);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -750,8 +854,10 @@ var
|
||||
freq : Double;
|
||||
mode : String;
|
||||
bandwidth : Integer;
|
||||
info : String;
|
||||
begin
|
||||
dmData.GetNextFreqFromMem(freq,mode,bandwidth);
|
||||
dmData.GetNextFreqFromMem(freq,mode,bandwidth,info);
|
||||
if dmData.DebugLevel>=1 then writeln('--------------FMWI',freq,' ',mode,' ',bandwidth,' ',info);
|
||||
if freq > 0 then
|
||||
SetFreqModeBandWidth(freq,mode,bandwidth)
|
||||
end;
|
||||
@ -761,8 +867,9 @@ var
|
||||
freq : Double;
|
||||
mode : String;
|
||||
bandwidth : Integer;
|
||||
info : String;
|
||||
begin
|
||||
dmData.GetPreviousFreqFromMem(freq,mode,bandwidth);
|
||||
dmData.GetPreviousFreqFromMem(freq,mode,bandwidth,info);
|
||||
if freq > 0 then
|
||||
SetFreqModeBandWidth(freq,mode,bandwidth)
|
||||
end;
|
||||
@ -851,6 +958,7 @@ var
|
||||
port : Integer;
|
||||
poll : Integer;
|
||||
begin
|
||||
|
||||
if Assigned(radio) then
|
||||
begin
|
||||
FreeAndNil(radio);
|
||||
@ -899,7 +1007,7 @@ begin
|
||||
Result := True;
|
||||
|
||||
pnlPower.Visible := cqrini.ReadBool('TRX','PowerButtons',False);
|
||||
Menuitem3.Checked := pnlPower.Visible;
|
||||
mnuShowPwr.Checked := pnlPower.Visible;
|
||||
if pnlPower.Visible then btPonClick(nil);
|
||||
// all rigs do not support rigctld power switching
|
||||
//so we just put pwr button ON and send rigctld PWR ON cmd
|
||||
@ -1145,7 +1253,6 @@ begin
|
||||
|
||||
SetFreqModeBandWidth(f,mode,bandwidth)
|
||||
end;
|
||||
|
||||
function TfrmTRXControl.GetModeFreqNewQSO(var mode,freq : String) : Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
@ -1175,7 +1282,8 @@ begin
|
||||
btn10m.Font.Color := COLOR_WINDOWTEXT;
|
||||
btn6m.Font.Color := COLOR_WINDOWTEXT;
|
||||
btn2m.Font.Color := COLOR_WINDOWTEXT;
|
||||
btn70cm.Font.Color := COLOR_WINDOWTEXT
|
||||
btn70cm.Font.Color := COLOR_WINDOWTEXT;
|
||||
|
||||
end;
|
||||
|
||||
function TfrmTRXControl.GetModeBand(var mode,band : String) : Boolean;
|
||||
@ -1222,7 +1330,8 @@ begin
|
||||
btnAM.Font.Color := clRed
|
||||
else
|
||||
if mode = 'FM' then
|
||||
btnFM.Font.Color := clRed
|
||||
btnFM.Font.Color := clRed;
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrmTRXControl.Split(Up : Integer);
|
||||
|