mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-21 02:17:19 +00:00
RBN monitor added
This commit is contained in:
parent
eb01d87462
commit
13dfe1717c
BIN
images/connect.png
Normal file
BIN
images/connect.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 387 B |
BIN
images/disconnect.png
Normal file
BIN
images/disconnect.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 397 B |
BIN
images/font.png
Normal file
BIN
images/font.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 705 B |
BIN
images/go-bottom.png
Normal file
BIN
images/go-bottom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 663 B |
BIN
images/help.png
Normal file
BIN
images/help.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 617 B |
BIN
images/rbn_list.png
Normal file
BIN
images/rbn_list.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 517 B |
@ -7,6 +7,7 @@ Legend:
|
||||
1.9.1
|
||||
+ support sending CW via HamLib library added
|
||||
+ CW type window is not modal window anymore
|
||||
+ RBN monitor added
|
||||
- Export configuration of opened log doesn't reflect recent changes - fixed
|
||||
- station that were not added to DX cluster window (because of filter criteria) were added to bandmap - fixed
|
||||
|
||||
|
@ -82,7 +82,7 @@
|
||||
<MinVersion Major="1" Minor="2" Release="1" Valid="True"/>
|
||||
</Item10>
|
||||
</RequiredPackages>
|
||||
<Units Count="83">
|
||||
<Units Count="86">
|
||||
<Unit0>
|
||||
<Filename Value="cqrlog.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -696,6 +696,30 @@
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fBandMapWatch"/>
|
||||
</Unit82>
|
||||
<Unit83>
|
||||
<Filename Value="fRbnFilter.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmRbnFilter"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fRbnFilter"/>
|
||||
</Unit83>
|
||||
<Unit84>
|
||||
<Filename Value="fRbnMonitor.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmRbnMonitor"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fRbnMonitor"/>
|
||||
</Unit84>
|
||||
<Unit85>
|
||||
<Filename Value="fRbnServer.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="frmRbnServer"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="fRbnServer"/>
|
||||
</Unit85>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -18,7 +18,7 @@ uses
|
||||
fRebuildMembStat,uVersion,fAbout,fChangelog,fBigSquareStat,feQSLDownload,
|
||||
feQSLUpload,fSOTAExport, fNewQSODefValues, fQSLExpPref, fRotControl,
|
||||
dLogUpload, fLogUploadStatus,frCWKeys, fCallAlert, fNewCallAlert,
|
||||
fConfigStorage;
|
||||
fConfigStorage, fRbnFilter, fRbnMonitor, fRbnServer;
|
||||
var
|
||||
Splash : TfrmSplash;
|
||||
|
||||
@ -54,6 +54,7 @@ begin
|
||||
Application.CreateForm(TfrmRotControl, frmRotControl);
|
||||
Application.CreateForm(TfrmLogUploadStatus, frmLogUploadStatus);
|
||||
Application.CreateForm(TfrmCWType, frmCWType);
|
||||
Application.CreateForm(TfrmRbnMonitor, frmRbnMonitor);
|
||||
|
||||
Splash.Update;
|
||||
application.ProcessMessages;
|
||||
|
BIN
src/cqrlog.or
BIN
src/cqrlog.or
Binary file not shown.
@ -7,9 +7,9 @@ object dmDXCC: TdmDXCC
|
||||
VerticalOffset = 377
|
||||
Width = 434
|
||||
object Q: TSQLQuery
|
||||
FieldDefs = <>
|
||||
BeforeOpen = QBeforeOpen
|
||||
Transaction = trQ
|
||||
ReadOnly = False
|
||||
Params = <>
|
||||
ParseSQL = False
|
||||
left = 168
|
||||
@ -22,8 +22,8 @@ object dmDXCC: TdmDXCC
|
||||
top = 80
|
||||
end
|
||||
object Q1: TSQLQuery
|
||||
FieldDefs = <>
|
||||
Transaction = trQ1
|
||||
ReadOnly = False
|
||||
Params = <>
|
||||
ParseSQL = False
|
||||
left = 112
|
||||
@ -36,8 +36,8 @@ object dmDXCC: TdmDXCC
|
||||
top = 80
|
||||
end
|
||||
object qDXCCRef: TSQLQuery
|
||||
FieldDefs = <>
|
||||
Transaction = trDXCCRef
|
||||
ReadOnly = False
|
||||
Params = <>
|
||||
ParseSQL = False
|
||||
left = 40
|
||||
@ -49,19 +49,19 @@ object dmDXCC: TdmDXCC
|
||||
left = 40
|
||||
top = 80
|
||||
end
|
||||
object dsrValid: TDatasource
|
||||
object dsrValid: TDataSource
|
||||
DataSet = qValid
|
||||
left = 304
|
||||
top = 80
|
||||
end
|
||||
object dsrDeleted: TDatasource
|
||||
object dsrDeleted: TDataSource
|
||||
DataSet = qDeleted
|
||||
left = 304
|
||||
top = 24
|
||||
end
|
||||
object qValid: TSQLQuery
|
||||
FieldDefs = <>
|
||||
Transaction = trValid
|
||||
ReadOnly = False
|
||||
Params = <>
|
||||
left = 376
|
||||
top = 80
|
||||
@ -79,7 +79,7 @@ object dmDXCC: TdmDXCC
|
||||
top = 24
|
||||
end
|
||||
object qDeleted: TSQLQuery
|
||||
ReadOnly = False
|
||||
FieldDefs = <>
|
||||
Params = <>
|
||||
ParseSQL = False
|
||||
left = 376
|
||||
|
@ -1,22 +1,24 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TdmDXCC','FORMDATA',[
|
||||
'TPF0'#7'TdmDXCC'#6'dmDXCC'#8'OnCreate'#7#16'DataModuleCreate'#9'OnDestroy'#7
|
||||
+#17'DataModuleDestroy'#14'OldCreateOrder'#8#6'Height'#3#214#0#16'HorizontalO'
|
||||
+'ffset'#3#178#2#14'VerticalOffset'#3'y'#1#5'Width'#3#178#1#0#9'TSQLQuery'#1
|
||||
+'Q'#10'BeforeOpen'#7#11'QBeforeOpen'#11'Transaction'#7#3'trQ'#8'ReadOnly'#8#6
|
||||
+'Params'#14#0#8'ParseSQL'#8#4'left'#3#168#0#3'top'#2#24#0#0#15'TSQLTransacti'
|
||||
+'on'#3'trQ'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#3#168#0#3'top'#2'P'#0#0
|
||||
+#9'TSQLQuery'#2'Q1'#11'Transaction'#7#4'trQ1'#8'ReadOnly'#8#6'Params'#14#0#8
|
||||
+'ParseSQL'#8#4'left'#2'p'#3'top'#2#24#0#0#15'TSQLTransaction'#4'trQ1'#6'Acti'
|
||||
+'ve'#8#6'Action'#7#6'caNone'#4'left'#2'p'#3'top'#2'P'#0#0#9'TSQLQuery'#8'qDX'
|
||||
+'CCRef'#11'Transaction'#7#9'trDXCCRef'#8'ReadOnly'#8#6'Params'#14#0#8'ParseS'
|
||||
+'QL'#8#4'left'#2'('#3'top'#2#24#0#0#15'TSQLTransaction'#9'trDXCCRef'#6'Activ'
|
||||
+'e'#8#6'Action'#7#6'caNone'#4'left'#2'('#3'top'#2'P'#0#0#11'TDatasource'#8'd'
|
||||
+'srValid'#7'DataSet'#7#6'qValid'#4'left'#3'0'#1#3'top'#2'P'#0#0#11'TDatasour'
|
||||
+'ce'#10'dsrDeleted'#7'DataSet'#7#8'qDeleted'#4'left'#3'0'#1#3'top'#2#24#0#0#9
|
||||
+'TSQLQuery'#6'qValid'#11'Transaction'#7#7'trValid'#8'ReadOnly'#8#6'Params'#14
|
||||
+#0#4'left'#3'x'#1#3'top'#2'P'#0#0#15'TSQLTransaction'#7'trValid'#6'Active'#8
|
||||
+#6'Action'#7#6'caNone'#4'left'#3#216#0#3'top'#2'P'#0#0#15'TSQLTransaction'#9
|
||||
+'trDeleted'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#3#221#0#3'top'#2#24#0#0
|
||||
+#9'TSQLQuery'#8'qDeleted'#8'ReadOnly'#8#6'Params'#14#0#8'ParseSQL'#8#4'left'
|
||||
+#3'x'#1#3'top'#2#24#0#0#0
|
||||
+'Q'#9'FieldDefs'#14#0#10'BeforeOpen'#7#11'QBeforeOpen'#11'Transaction'#7#3't'
|
||||
+'rQ'#6'Params'#14#0#8'ParseSQL'#8#4'left'#3#168#0#3'top'#2#24#0#0#15'TSQLTra'
|
||||
+'nsaction'#3'trQ'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#3#168#0#3'top'#2
|
||||
+'P'#0#0#9'TSQLQuery'#2'Q1'#9'FieldDefs'#14#0#11'Transaction'#7#4'trQ1'#6'Par'
|
||||
+'ams'#14#0#8'ParseSQL'#8#4'left'#2'p'#3'top'#2#24#0#0#15'TSQLTransaction'#4
|
||||
+'trQ1'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#2'p'#3'top'#2'P'#0#0#9'TSQL'
|
||||
+'Query'#8'qDXCCRef'#9'FieldDefs'#14#0#11'Transaction'#7#9'trDXCCRef'#6'Param'
|
||||
+'s'#14#0#8'ParseSQL'#8#4'left'#2'('#3'top'#2#24#0#0#15'TSQLTransaction'#9'tr'
|
||||
+'DXCCRef'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#2'('#3'top'#2'P'#0#0#11
|
||||
+'TDataSource'#8'dsrValid'#7'DataSet'#7#6'qValid'#4'left'#3'0'#1#3'top'#2'P'#0
|
||||
+#0#11'TDataSource'#10'dsrDeleted'#7'DataSet'#7#8'qDeleted'#4'left'#3'0'#1#3
|
||||
+'top'#2#24#0#0#9'TSQLQuery'#6'qValid'#9'FieldDefs'#14#0#11'Transaction'#7#7
|
||||
+'trValid'#6'Params'#14#0#4'left'#3'x'#1#3'top'#2'P'#0#0#15'TSQLTransaction'#7
|
||||
+'trValid'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#3#216#0#3'top'#2'P'#0#0
|
||||
+#15'TSQLTransaction'#9'trDeleted'#6'Active'#8#6'Action'#7#6'caNone'#4'left'#3
|
||||
+#221#0#3'top'#2#24#0#0#9'TSQLQuery'#8'qDeleted'#9'FieldDefs'#14#0#6'Params'
|
||||
+#14#0#8'ParseSQL'#8#4'left'#3'x'#1#3'top'#2#24#0#0#0
|
||||
]);
|
||||
|
@ -102,6 +102,8 @@ type
|
||||
procedure LoadDXCCRefArray;
|
||||
procedure LoadExceptionArray;
|
||||
procedure RunCallAlertCmd(call,band,mode,freq : String);
|
||||
|
||||
|
||||
end;
|
||||
|
||||
var
|
||||
@ -1218,6 +1220,9 @@ begin
|
||||
end
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
initialization
|
||||
{$I dDXCluster.lrs}
|
||||
|
||||
|
@ -858,12 +858,23 @@ object dmData: TdmData
|
||||
object qBandMapFil: TSQLQuery
|
||||
FieldDefs = <>
|
||||
Params = <>
|
||||
left = 269
|
||||
top = 390
|
||||
left = 256
|
||||
top = 488
|
||||
end
|
||||
object trBandMapFil: TSQLTransaction
|
||||
Active = False
|
||||
left = 269
|
||||
top = 448
|
||||
left = 256
|
||||
top = 424
|
||||
end
|
||||
object qRbnMon: TSQLQuery
|
||||
FieldDefs = <>
|
||||
Params = <>
|
||||
left = 176
|
||||
top = 15
|
||||
end
|
||||
object trRbnMon: TSQLTransaction
|
||||
Active = False
|
||||
left = 256
|
||||
top = 16
|
||||
end
|
||||
end
|
||||
|
@ -320,6 +320,8 @@ LazarusResources.Add('TdmData','FORMDATA',[
|
||||
+'efault-character-set=utf8'#6#0#0#10'Terminator'#6#1';'#13'CommentsinSQL'#9
|
||||
+#10'UseSetTerm'#9#9'UseCommit'#9#10'UseDefines'#9#4'left'#3#200#1#3'top'#3
|
||||
+#208#0#0#0#9'TSQLQuery'#11'qBandMapFil'#9'FieldDefs'#14#0#6'Params'#14#0#4'l'
|
||||
+'eft'#3#13#1#3'top'#3#134#1#0#0#15'TSQLTransaction'#12'trBandMapFil'#6'Activ'
|
||||
,'e'#8#4'left'#3#13#1#3'top'#3#192#1#0#0#0
|
||||
+'eft'#3#0#1#3'top'#3#232#1#0#0#15'TSQLTransaction'#12'trBandMapFil'#6'Active'
|
||||
,#8#4'left'#3#0#1#3'top'#3#168#1#0#0#9'TSQLQuery'#7'qRbnMon'#9'FieldDefs'#14#0
|
||||
+#6'Params'#14#0#4'left'#3#176#0#3'top'#2#15#0#0#15'TSQLTransaction'#8'trRbnM'
|
||||
+'on'#6'Active'#8#4'left'#3#0#1#3'top'#2#16#0#0#0
|
||||
]);
|
||||
|
180
src/dData.pas
180
src/dData.pas
@ -102,6 +102,8 @@ type
|
||||
scQSLExport : TSQLScript;
|
||||
scMySQLConfig: TSQLScript;
|
||||
qBandMapFil: TSQLQuery;
|
||||
qRbnMon: TSQLQuery;
|
||||
trRbnMon: TSQLTransaction;
|
||||
trBandMapFil: TSQLTransaction;
|
||||
tmrDBPing: TTimer;
|
||||
trCQRLOG: TSQLTransaction;
|
||||
@ -161,7 +163,7 @@ type
|
||||
aProf : Array of TExpProfile;
|
||||
aSCP : Array of String[20];
|
||||
MySQLProcess : TProcess;
|
||||
|
||||
csPreviousQSO : TRTLCriticalSection;
|
||||
fMySQLVersion : Currency;
|
||||
|
||||
function FindLib(const Path,LibName : String) : String;
|
||||
@ -190,6 +192,8 @@ type
|
||||
}
|
||||
MainCon : TSQLConnection;
|
||||
BandMapCon : TSQLConnection;
|
||||
RbnMonCon : TSQLConnection;
|
||||
|
||||
eQSLUsers : Array of ShortString;
|
||||
CallArray : Array [0..MaxCall] of String[20];
|
||||
IsFilter : Boolean;
|
||||
@ -266,7 +270,9 @@ type
|
||||
function BandModFromFreq(freq : String;var mode,band : String) : Boolean;
|
||||
function TriggersExistsOnCqrlog_main : Boolean;
|
||||
function GetLastAllertCallId(const callsign,band,mode : String) : Integer;
|
||||
function SkipBandMapDateTime(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
function CallExistsInLog(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
function RbnMonDXCCInfo(adif : Word; band, mode : String;DxccWithLoTW:Boolean; var index : integer) : String;
|
||||
function RbnCallExistsInLog(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
|
||||
procedure SaveQSO(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;
|
||||
@ -509,6 +515,8 @@ begin
|
||||
dmDXCluster.dbDXC.Connected := False;
|
||||
if dmLogUpload.LogUploadCon.Connected then
|
||||
dmLogUpload.LogUploadCon.Connected := False;
|
||||
if RbnMonCon.Connected then
|
||||
RbnMonCon.Connected := False;
|
||||
|
||||
if fMySQLVersion < 5.5 then
|
||||
begin
|
||||
@ -516,7 +524,10 @@ begin
|
||||
(MainCon as TMySQL51Connection).Port := StrToInt(port);
|
||||
|
||||
(BandMapCon as TMySQL51Connection).HostName := host;
|
||||
(BandMapCon as TMySQL51Connection).Port := StrToInt(port)
|
||||
(BandMapCon as TMySQL51Connection).Port := StrToInt(port);
|
||||
|
||||
(RbnMonCon as TMySQL51Connection).HostName := host;
|
||||
(RbnMonCon as TMySQL51Connection).Port := StrToInt(port)
|
||||
end
|
||||
else begin
|
||||
if fMySQLVersion = 5.5 then
|
||||
@ -525,14 +536,20 @@ begin
|
||||
(MainCon as TMySQL55Connection).Port := StrToInt(port);
|
||||
|
||||
(BandMapCon as TMySQL55Connection).HostName := host;
|
||||
(BandMapCon as TMySQL55Connection).Port := StrToInt(port)
|
||||
(BandMapCon as TMySQL55Connection).Port := StrToInt(port);
|
||||
|
||||
(RbnMonCon as TMySQL55Connection).HostName := host;
|
||||
(RbnMonCon as TMySQL55Connection).Port := StrToInt(port)
|
||||
end
|
||||
else begin
|
||||
(MainCon as TMySQL56Connection).HostName := host;
|
||||
(MainCon as TMySQL56Connection).Port := StrToInt(port);
|
||||
|
||||
(BandMapCon as TMySQL56Connection).HostName := host;
|
||||
(BandMapCon as TMySQL56Connection).Port := StrToInt(port)
|
||||
(BandMapCon as TMySQL56Connection).Port := StrToInt(port);
|
||||
|
||||
(RbnMonCon as TMySQL56Connection).HostName := host;
|
||||
(RbnMonCon as TMySQL56Connection).Port := StrToInt(port)
|
||||
end
|
||||
end;
|
||||
MainCon.UserName := user;
|
||||
@ -543,6 +560,10 @@ begin
|
||||
BandMapCon.Password := pass;
|
||||
BandMapCon.DatabaseName := 'information_schema';
|
||||
|
||||
RbnMonCon.UserName := user;
|
||||
RbnMonCon.Password := pass;
|
||||
RbnMonCon.DatabaseName := 'information_schema';
|
||||
|
||||
if fMySQLVersion < 5.5 then
|
||||
begin
|
||||
(dmDXCluster.dbDXC as TMySQL51Connection).HostName := host;
|
||||
@ -588,7 +609,8 @@ begin
|
||||
MainCon.Connected := True;
|
||||
dmDXCluster.dbDXC.Connected := True;
|
||||
dmLogUpload.LogUploadCon.Connected := True;
|
||||
BandMapCon.Connected := True
|
||||
BandMapCon.Connected := True;
|
||||
RbnMonCon.Connected := True;
|
||||
except
|
||||
on E : Exception do
|
||||
begin
|
||||
@ -705,6 +727,14 @@ begin
|
||||
qBandMapFil.ExecSQL;
|
||||
trBandMapFil.Commit;
|
||||
|
||||
if trRbnMon.Active then trRbnMon.Rollback;
|
||||
qRbnMon.Close;
|
||||
qRbnMon.SQL.Text := 'use ' + fDBName;
|
||||
if (fDebugLevel>=1) then Writeln(qRbnMon.SQL.Text);
|
||||
trRbnMon.StartTransaction;
|
||||
qRbnMon.ExecSQL;
|
||||
trRbnMon.Commit;
|
||||
|
||||
Q.SQL.Text := 'SELECT * FROM cqrlog_config';
|
||||
trQ.StartTransaction;
|
||||
l := TStringList.Create;
|
||||
@ -1059,6 +1089,7 @@ var
|
||||
MySQLVer : String;
|
||||
param : String;
|
||||
begin
|
||||
InitCriticalSection(csPreviousQSO);
|
||||
cqrini := nil;
|
||||
IsSFilter := False;
|
||||
|
||||
@ -1178,16 +1209,19 @@ begin
|
||||
if fMySQLVersion < 5.5 then
|
||||
begin
|
||||
MainCon := TMySQL51Connection.Create(self);
|
||||
BandMapCon := TMySQL51Connection.Create(self)
|
||||
BandMapCon := TMySQL51Connection.Create(self);
|
||||
RbnMonCon := TMySQL51Connection.Create(self);
|
||||
end
|
||||
else if fMySQLVersion < 5.6 then
|
||||
begin
|
||||
MainCon := TMySQL55Connection.Create(self);
|
||||
BandMapCon := TMySQL55Connection.Create(self)
|
||||
BandMapCon := TMySQL55Connection.Create(self);
|
||||
RbnMonCon := TMySQL55Connection.Create(self)
|
||||
end
|
||||
else begin
|
||||
MainCon := TMySQL56Connection.Create(self);
|
||||
BandMapCon := TMySQL56Connection.Create(self)
|
||||
BandMapCon := TMySQL56Connection.Create(self);
|
||||
RbnMonCon := TMySQL56Connection.Create(self)
|
||||
end;
|
||||
|
||||
MainCon.KeepConnection := True;
|
||||
@ -1207,6 +1241,12 @@ begin
|
||||
qBandMapFil.DataBase := BandMapCon;
|
||||
trBandMapFil.DataBase := BandMapCon;
|
||||
|
||||
RbnMonCon.KeepConnection := True;
|
||||
RbnMonCon.Transaction := trRbnMon;
|
||||
qRbnMon.Transaction := trRbnMon;
|
||||
qRbnMon.DataBase := RbnMonCon;
|
||||
trRbnMon.DataBase := RbnMonCon;
|
||||
|
||||
DLLSSLName := dmData.cDLLSSLName;
|
||||
DLLUtilName := dmData.cDLLUtilName;
|
||||
|
||||
@ -1315,6 +1355,7 @@ begin
|
||||
DeleteFile(dmData.HomeDir + 'xplanet'+PathDelim+'marker');
|
||||
BandMapCon.Connected := False;
|
||||
MainCon.Connected := False;
|
||||
DoneCriticalsection(csPreviousQSO);
|
||||
KillMySQL(False)
|
||||
end;
|
||||
|
||||
@ -3899,13 +3940,15 @@ begin
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmData.SkipBandMapDateTime(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
function TdmData.CallExistsInLog(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
var
|
||||
sql : String;
|
||||
begin
|
||||
Result := False;
|
||||
qBandMapFil.Close;
|
||||
EnterCriticalsection(csPreviousQSO);
|
||||
try
|
||||
Result := False;
|
||||
qBandMapFil.Close;
|
||||
|
||||
//this ugly query is because I made a stupid mistake when stored qsodate and time_on as Varchar(), now it's probably
|
||||
//too late to rewrite it (Petr, OK2CQR)
|
||||
sql := 'select id_cqrlog_main from cqrlog_main where (callsign= '+QuotedStr(callsign)+') and (band = '+QuotedStr(band)+') '+
|
||||
@ -3917,10 +3960,121 @@ begin
|
||||
Result := qBandMapFil.RecordCount > 0
|
||||
finally
|
||||
qBandMapFil.Close;
|
||||
trBandMapFil.RollBack
|
||||
trBandMapFil.RollBack;
|
||||
LeaveCriticalsection(csPreviousQSO)
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmData.RbnMonDXCCInfo(adif : Word; band, mode : String;DxccWithLoTW:Boolean; var index : integer) : String;
|
||||
var
|
||||
sAdif : String = '';
|
||||
begin
|
||||
// index : 0 - unknown country, no qsl needed
|
||||
// index : 1 - New country
|
||||
// index : 2 - New band country
|
||||
// index : 3 - New mode country
|
||||
// index : 4 - QSL needed
|
||||
if (adif = 0) then
|
||||
begin
|
||||
Result := 'Unknown country';
|
||||
index := 0;
|
||||
exit
|
||||
end;
|
||||
index := 1;
|
||||
sAdif := IntToStr(adif);
|
||||
|
||||
if trRbnMon.Active then
|
||||
trRbnMon.Rollback;
|
||||
|
||||
try try
|
||||
if DxccWithLoTW then
|
||||
qRbnMon.SQL.Text := 'SELECT id_cqrlog_main FROM '+dmData.DBName+'.cqrlog_main WHERE adif='+
|
||||
sAdif+' AND band='+QuotedStr(band)+' AND ((qsl_r='+
|
||||
QuotedStr('Q')+') OR (lotw_qslr='+QuotedStr('L')+')) AND mode='+
|
||||
QuotedStr(mode)+' LIMIT 1'
|
||||
else
|
||||
qRbnMon.SQL.Text := 'SELECT id_cqrlog_main FROM '+dmData.DBName+'.cqrlog_main WHERE adif='+
|
||||
sAdif+' AND band='+QuotedStr(band)+' AND qsl_r='+
|
||||
QuotedStr('Q')+ ' AND mode='+QuotedStr(mode)+' LIMIT 1';
|
||||
trRbnMon.StartTransaction;
|
||||
qRbnMon.Open;
|
||||
if qRbnMon.Fields[0].AsInteger > 0 then
|
||||
begin
|
||||
Result := 'Confirmed country!!';
|
||||
index := 0
|
||||
end
|
||||
else begin
|
||||
qRbnMon.Close;
|
||||
qRbnMon.SQL.Text := 'SELECT id_cqrlog_main FROM '+dmData.DBName+'.cqrlog_main WHERE adif='+
|
||||
sAdif+' AND band='+QuotedStr(band)+' AND mode='+
|
||||
QuotedStr(mode)+' LIMIT 1';
|
||||
qRbnMon.Open;
|
||||
if qRbnMon.Fields[0].AsInteger > 0 then
|
||||
begin
|
||||
Result := 'QSL needed !!';
|
||||
index := 4
|
||||
end
|
||||
else begin
|
||||
qRbnMon.Close;
|
||||
qRbnMon.SQL.Text := 'SELECT id_cqrlog_main FROM '+dmData.DBName+'.cqrlog_main WHERE adif='+
|
||||
sAdif+' AND band='+QuotedStr(band)+' LIMIT 1';
|
||||
qRbnMon.Open;
|
||||
if qRbnMon.Fields[0].AsInteger > 0 then
|
||||
begin
|
||||
Result := 'New mode country!!';
|
||||
index := 3
|
||||
end
|
||||
else begin
|
||||
qRbnMon.Close;
|
||||
qRbnMon.SQL.Text := 'SELECT id_cqrlog_main FROM '+dmData.DBName+'.cqrlog_main WHERE adif='+
|
||||
sAdif+' LIMIT 1';
|
||||
qRbnMon.Open;
|
||||
if qRbnMon.Fields[0].AsInteger>0 then
|
||||
begin
|
||||
Result := 'New band country!!';
|
||||
index := 2
|
||||
end
|
||||
else begin
|
||||
Result := 'New country!!';
|
||||
index := 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
except
|
||||
on E : Exception do
|
||||
Writeln(E.Message)
|
||||
end
|
||||
finally
|
||||
qRbnMon.Close;
|
||||
trRbnMon.Rollback
|
||||
end
|
||||
end;
|
||||
|
||||
function TdmData.RbnCallExistsInLog(callsign,band,mode,LastDate,LastTime : String) : Boolean;
|
||||
var
|
||||
sql : String;
|
||||
begin
|
||||
try
|
||||
Result := False;
|
||||
qRbnMon.Close;
|
||||
|
||||
//this ugly query is because I made a stupid mistake when stored qsodate and time_on as Varchar(), now it's probably
|
||||
//too late to rewrite it (Petr, OK2CQR)
|
||||
sql := 'select id_cqrlog_main from cqrlog_main where (callsign= '+QuotedStr(callsign)+') and (band = '+QuotedStr(band)+') '+
|
||||
'and (mode = '+QuotedStr(mode)+') and (str_to_date(concat(qsodate,'+QuotedStr(' ')+',time_on), '+
|
||||
QuotedStr('%Y-%m-%d %H:%i')+')) > str_to_date('+QuotedStr(LastDate+' '+LastTime)+', '+QuotedStr('%Y-%m-%d %H:%i')+')';
|
||||
qRbnMon.SQL.Text := sql;
|
||||
if fDebugLevel>=1 then Writeln(qRbnMon.SQL.Text);
|
||||
qRbnMon.Open;
|
||||
Result := qRbnMon.RecordCount > 0
|
||||
finally
|
||||
qRbnMon.Close;
|
||||
trRbnMon.RollBack
|
||||
end
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I dData.lrs}
|
||||
|
||||
|
@ -56,6 +56,11 @@ const
|
||||
cIngnoreFreq: array [0..cMaxIgnoreFreq] of string =
|
||||
('1800.0', '3500.0', '7000.0', '10100.0', '14000.0', '21000.0', '28000.0');
|
||||
|
||||
C_RBN_CONT = 'AF,AN,AS,EU,NA,SA,OC';
|
||||
C_RBN_BANDS = '160M,80M,40M,30M,20M,17M,15M,12M,10M,6M,2M';
|
||||
C_RBN_MODES = 'CW,RTTY,PSK31';
|
||||
|
||||
|
||||
type
|
||||
|
||||
{ TdmUtils }
|
||||
|
@ -27,7 +27,7 @@ object frmBandMap: TfrmBandMap
|
||||
Left = 0
|
||||
Height = 26
|
||||
Top = 0
|
||||
Width = 259
|
||||
Width = 255
|
||||
Caption = 'toolBandMap'
|
||||
Images = imglBandMap
|
||||
TabOrder = 0
|
||||
|
@ -448,7 +448,7 @@ begin
|
||||
skip := False;
|
||||
|
||||
if not (frmBandMap.FDateFilterType = dftShowAll) then
|
||||
skip := dmData.SkipBandMapDateTime(AddArray[y].Call,AddArray[y].Band,AddArray[y].Mode,LastDate,LastTime);
|
||||
skip := dmData.CallExistsInLog(AddArray[y].Call,AddArray[y].Band,AddArray[y].Mode,LastDate,LastTime);
|
||||
|
||||
if frmBandMap.FOnlyLoTW and frmBandMap.FOnlyEQSL then
|
||||
begin
|
||||
|
@ -177,7 +177,7 @@ begin
|
||||
if cmbStoreCalbook.ItemIndex>0 then
|
||||
Sections := Sections + 'CallBook,';
|
||||
if cmbStoreRbn.ItemIndex>0 then
|
||||
Sections := Sections + 'RBN,';
|
||||
Sections := Sections + 'RBN,RBNFilter,';
|
||||
if cmbStoreOnlineLog.ItemIndex>0 then
|
||||
Sections := Sections + 'OnlineLog,';
|
||||
if cmbStoreWindowSize.ItemIndex>0 then
|
||||
|
@ -1,7 +1,7 @@
|
||||
object frmNewQSO: TfrmNewQSO
|
||||
Left = 368
|
||||
Height = 651
|
||||
Top = 331
|
||||
Top = 303
|
||||
Width = 807
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'help/index.html'
|
||||
@ -2122,6 +2122,9 @@ object frmNewQSO: TfrmNewQSO
|
||||
object MenuItem52: TMenuItem
|
||||
Action = acLogUploadStatus
|
||||
end
|
||||
object MenuItem91: TMenuItem
|
||||
Action = acRBNMonitor
|
||||
end
|
||||
end
|
||||
object MenuItem3: TMenuItem
|
||||
Caption = 'Statistics'
|
||||
@ -2801,6 +2804,11 @@ object frmNewQSO: TfrmNewQSO
|
||||
ImageIndex = 15
|
||||
OnExecute = acRefreshTimeExecute
|
||||
end
|
||||
object acRBNMonitor: TAction
|
||||
Category = 'Window'
|
||||
Caption = 'RBN monitor'
|
||||
OnExecute = acRBNMonitorExecute
|
||||
end
|
||||
end
|
||||
object imgMain: TImageList
|
||||
left = 200
|
||||
|
1379
src/fNewQSO.lrs
1379
src/fNewQSO.lrs
File diff suppressed because it is too large
Load Diff
@ -62,6 +62,7 @@ type
|
||||
acLogUploadStatus: TAction;
|
||||
acHotkeys: TAction;
|
||||
acRefreshTime: TAction;
|
||||
acRBNMonitor: TAction;
|
||||
acUploadToAll: TAction;
|
||||
acUploadToHrdLog: TAction;
|
||||
acUploadToClubLog: TAction;
|
||||
@ -91,6 +92,7 @@ type
|
||||
MenuItem88: TMenuItem;
|
||||
MenuItem89: TMenuItem;
|
||||
MenuItem90: TMenuItem;
|
||||
MenuItem91: TMenuItem;
|
||||
mnuOnlineLog: TMenuItem;
|
||||
MenuItem54: TMenuItem;
|
||||
MenuItem55: TMenuItem;
|
||||
@ -306,6 +308,7 @@ type
|
||||
procedure acOpenLogExecute(Sender: TObject);
|
||||
procedure acPropExecute(Sender: TObject);
|
||||
procedure acQSOListExecute(Sender: TObject);
|
||||
procedure acRBNMonitorExecute(Sender: TObject);
|
||||
procedure acRefreshTimeExecute(Sender: TObject);
|
||||
procedure acRefreshTRXExecute(Sender: TObject);
|
||||
procedure acReloadCWExecute(Sender: TObject);
|
||||
@ -559,7 +562,7 @@ type
|
||||
procedure NewQSO;
|
||||
procedure ClearAll;
|
||||
procedure SavePosition;
|
||||
procedure NewQSOFromSpot(call,freq,mode : String);
|
||||
procedure NewQSOFromSpot(call,freq,mode : String;FromRbn : Boolean = False);
|
||||
procedure SetEditLabel;
|
||||
procedure UnsetEditLabel;
|
||||
procedure StoreClubInfo(where,StoreText : String);
|
||||
@ -626,7 +629,7 @@ uses dUtils, fChangeLocator, dDXCC, dDXCluster, dData, fMain, fSelectDXCC, fGray
|
||||
fQSODetails, fWAZITUStat, fIOTAStat, fGraphStat, fImportProgress, fBandMap,
|
||||
fLongNote, fRefCall, fKeyTexts, fCWType, fExportProgress, fPropagation, fCallAttachment,
|
||||
fQSLViewer, fCWKeys, uMyIni, fDBConnect, fAbout, uVersion, fChangelog,
|
||||
fBigSquareStat, fSCP, fRotControl, fLogUploadStatus;
|
||||
fBigSquareStat, fSCP, fRotControl, fLogUploadStatus, fRbnMonitor;
|
||||
|
||||
procedure TQSLTabThread.Execute;
|
||||
var
|
||||
@ -1210,6 +1213,9 @@ begin
|
||||
if cqrini.ReadBool('Window','CWType',False) then
|
||||
acCWType.Execute;
|
||||
|
||||
if cqrini.ReadBool('Window','RBNMonitor',False) then
|
||||
acRBNMonitor.Execute;
|
||||
|
||||
if cqrini.ReadBool('Program','CheckDXCCTabs',True) then
|
||||
begin
|
||||
Tab := TDXCCTabThread.Create(True);
|
||||
@ -1351,6 +1357,14 @@ begin
|
||||
else
|
||||
cqrini.WriteBool('Window','CWType',False);
|
||||
|
||||
if frmRBNMonitor.Showing then
|
||||
begin
|
||||
cqrini.WriteBool('Window','RBNMonitor',True);
|
||||
frmRBNMonitor.Close
|
||||
end
|
||||
else
|
||||
cqrini.WriteBool('Window','CWType',False);
|
||||
|
||||
cqrini.DeleteKey('TMPQSO','OFF');
|
||||
cqrini.DeleteKey('TMPQSO','FREQ');
|
||||
cqrini.DeleteKey('TMPQSO','Mode');
|
||||
@ -3103,6 +3117,11 @@ begin
|
||||
frmMain.Show
|
||||
end;
|
||||
|
||||
procedure TfrmNewQSO.acRBNMonitorExecute(Sender: TObject);
|
||||
begin
|
||||
frmRBNMonitor.Show
|
||||
end;
|
||||
|
||||
procedure TfrmNewQSO.acRefreshTimeExecute(Sender: TObject);
|
||||
begin
|
||||
FillDateTimeFields
|
||||
@ -4917,7 +4936,7 @@ begin
|
||||
Handled := True
|
||||
end;
|
||||
|
||||
procedure TfrmNewQSO.NewQSOFromSpot(call,freq,mode : String);
|
||||
procedure TfrmNewQSO.NewQSOFromSpot(call,freq,mode : String;FromRbn : Boolean = False);
|
||||
var
|
||||
etmp : Extended;
|
||||
begin
|
||||
@ -4938,7 +4957,8 @@ begin
|
||||
if chkAutoMode.Checked then
|
||||
cmbMode.Text := mode;
|
||||
freq := FloatToStr(etmp);
|
||||
mode := dmUtils.GetModeFromFreq(freq);
|
||||
if not FromRbn then
|
||||
mode := dmUtils.GetModeFromFreq(freq);
|
||||
etmp := etmp*1000;
|
||||
freq := FloatToStr(etmp);
|
||||
frmTRXControl.SetModeFreq(mode,freq);
|
||||
|
366
src/fRbnFilter.lfm
Normal file
366
src/fRbnFilter.lfm
Normal file
@ -0,0 +1,366 @@
|
||||
object frmRbnFilter: TfrmRbnFilter
|
||||
Left = 445
|
||||
Height = 608
|
||||
Top = 191
|
||||
Width = 684
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'RBN filter criteria'
|
||||
ClientHeight = 608
|
||||
ClientWidth = 684
|
||||
OnShow = FormShow
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.2.4.0'
|
||||
object GroupBox3: TGroupBox
|
||||
Left = 8
|
||||
Height = 520
|
||||
Top = 80
|
||||
Width = 664
|
||||
Caption = 'DX station '
|
||||
ClientHeight = 501
|
||||
ClientWidth = 660
|
||||
TabOrder = 1
|
||||
object GroupBox5: TGroupBox
|
||||
Left = 8
|
||||
Height = 137
|
||||
Top = 96
|
||||
Width = 638
|
||||
Caption = ' Callsign '
|
||||
ClientHeight = 118
|
||||
ClientWidth = 634
|
||||
TabOrder = 5
|
||||
object rbAllDx: TRadioButton
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 16
|
||||
Width = 44
|
||||
Caption = 'All'
|
||||
Checked = True
|
||||
TabOrder = 0
|
||||
TabStop = True
|
||||
end
|
||||
object rbOnlyCall: TRadioButton
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 48
|
||||
Width = 160
|
||||
Caption = 'Only these callsigns:'
|
||||
TabOrder = 1
|
||||
end
|
||||
object rbOnlyCallReg: TRadioButton
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 80
|
||||
Width = 199
|
||||
Caption = 'Only these by expression: '
|
||||
TabOrder = 3
|
||||
end
|
||||
object edtDXOnlyCall: TEdit
|
||||
Left = 240
|
||||
Height = 27
|
||||
Top = 48
|
||||
Width = 272
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 2
|
||||
Text = 'EDTDXONLYCALL'
|
||||
end
|
||||
object edtDXOnlyExpres: TEdit
|
||||
Left = 240
|
||||
Height = 27
|
||||
Top = 80
|
||||
Width = 272
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 4
|
||||
Text = 'EDTDXONLYEXPRES'
|
||||
end
|
||||
object Label9: TLabel
|
||||
Left = 528
|
||||
Height = 17
|
||||
Top = 56
|
||||
Width = 89
|
||||
Caption = 'K1B, K1N etc.'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label10: TLabel
|
||||
Left = 528
|
||||
Height = 17
|
||||
Top = 87
|
||||
Width = 67
|
||||
Caption = 'K[0..9]A?Z'
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
object Label4: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 252
|
||||
Width = 70
|
||||
Caption = 'Continent:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtDXCont: TEdit
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 248
|
||||
Width = 280
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 6
|
||||
Text = 'EDTDXCONT'
|
||||
end
|
||||
object edtDXBand: TEdit
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 280
|
||||
Width = 416
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 7
|
||||
Text = 'EDTDXBAND'
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 285
|
||||
Width = 45
|
||||
Caption = 'Bands:'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label6: TLabel
|
||||
Left = 523
|
||||
Height = 17
|
||||
Top = 284
|
||||
Width = 101
|
||||
Caption = '160M, 80M etc.'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label7: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 317
|
||||
Width = 50
|
||||
Caption = 'Modes:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtDXMode: TEdit
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 312
|
||||
Width = 344
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 8
|
||||
Text = 'EDTDXMODE'
|
||||
end
|
||||
object Label8: TLabel
|
||||
Left = 456
|
||||
Height = 17
|
||||
Top = 317
|
||||
Width = 94
|
||||
Caption = 'CW, RTTY etc.'
|
||||
ParentColor = False
|
||||
end
|
||||
object rbIgnWkdHour: TRadioButton
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 17
|
||||
Width = 169
|
||||
Caption = 'Ignore worked in last '
|
||||
Checked = True
|
||||
TabOrder = 0
|
||||
TabStop = True
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
Left = 8
|
||||
Height = 2
|
||||
Top = 456
|
||||
Width = 638
|
||||
end
|
||||
object edtLastHours: TEdit
|
||||
Left = 192
|
||||
Height = 27
|
||||
Top = 16
|
||||
Width = 41
|
||||
TabOrder = 1
|
||||
Text = '48'
|
||||
end
|
||||
object Label1: TLabel
|
||||
Left = 244
|
||||
Height = 17
|
||||
Top = 21
|
||||
Width = 229
|
||||
Caption = 'hours on the same band and mode'
|
||||
ParentColor = False
|
||||
end
|
||||
object rbIgnWkdDate: TRadioButton
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 52
|
||||
Width = 163
|
||||
Caption = 'Ignore worked after '
|
||||
TabOrder = 2
|
||||
end
|
||||
object edtDate: TEdit
|
||||
Left = 192
|
||||
Height = 27
|
||||
Top = 51
|
||||
Width = 96
|
||||
TabOrder = 3
|
||||
Text = '2000-10-10'
|
||||
end
|
||||
object edtTime: TEdit
|
||||
Left = 300
|
||||
Height = 27
|
||||
Top = 51
|
||||
Width = 48
|
||||
TabOrder = 4
|
||||
Text = '12:12'
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 384
|
||||
Height = 17
|
||||
Top = 56
|
||||
Width = 159
|
||||
Caption = '(YYYY-MM-DD, HH:MM)'
|
||||
ParentColor = False
|
||||
end
|
||||
object Bevel2: TBevel
|
||||
Left = 8
|
||||
Height = 2
|
||||
Top = 380
|
||||
Width = 638
|
||||
end
|
||||
object chkOnlyeQSL: TCheckBox
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 424
|
||||
Width = 170
|
||||
Caption = 'Show only eQSL users'
|
||||
TabOrder = 14
|
||||
end
|
||||
object chkOnlyLoTW: TCheckBox
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 392
|
||||
Width = 174
|
||||
Caption = 'Show only LoTW users'
|
||||
TabOrder = 13
|
||||
end
|
||||
object chkNewDXConly: TCheckBox
|
||||
Left = 8
|
||||
Height = 24
|
||||
Top = 465
|
||||
Width = 441
|
||||
Caption = 'Show only spots that are "New one"/"New band"/"New mode" '
|
||||
TabOrder = 15
|
||||
end
|
||||
object edtDXCnty: TEdit
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 344
|
||||
Width = 184
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 9
|
||||
Text = 'EDTDXCNTY'
|
||||
end
|
||||
object Label11: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 349
|
||||
Width = 69
|
||||
Caption = 'Countries:'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label12: TLabel
|
||||
Left = 320
|
||||
Height = 17
|
||||
Top = 349
|
||||
Width = 51
|
||||
Caption = 'or NOT '
|
||||
ParentColor = False
|
||||
end
|
||||
object edtDXCNotCnty: TEdit
|
||||
Left = 392
|
||||
Height = 27
|
||||
Top = 344
|
||||
Width = 175
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 11
|
||||
Text = 'EDTDXCNOTCNTY'
|
||||
end
|
||||
object btnDXCCnty: TButton
|
||||
Left = 280
|
||||
Height = 25
|
||||
Top = 345
|
||||
Width = 30
|
||||
Caption = '...'
|
||||
TabOrder = 10
|
||||
end
|
||||
object btnDXCNotCnty: TButton
|
||||
Left = 567
|
||||
Height = 25
|
||||
Top = 345
|
||||
Width = 30
|
||||
Caption = '...'
|
||||
TabOrder = 12
|
||||
end
|
||||
object Label14: TLabel
|
||||
Left = 387
|
||||
Height = 17
|
||||
Top = 252
|
||||
Width = 94
|
||||
Caption = 'AF, AN, AS etc'
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
object GroupBox4: TGroupBox
|
||||
Left = 8
|
||||
Height = 65
|
||||
Top = 8
|
||||
Width = 513
|
||||
Caption = ' Source data from '
|
||||
ClientHeight = 46
|
||||
ClientWidth = 509
|
||||
TabOrder = 0
|
||||
object Label3: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 12
|
||||
Width = 70
|
||||
Caption = 'Continent:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtSrcCont: TEdit
|
||||
Left = 96
|
||||
Height = 27
|
||||
Top = 8
|
||||
Width = 280
|
||||
CharCase = ecUppercase
|
||||
TabOrder = 0
|
||||
Text = 'EDTSRCCONT'
|
||||
end
|
||||
object Label13: TLabel
|
||||
Left = 387
|
||||
Height = 17
|
||||
Top = 12
|
||||
Width = 94
|
||||
Caption = 'AF, AN, AS etc'
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
object btnOK: TButton
|
||||
Left = 597
|
||||
Height = 25
|
||||
Top = 8
|
||||
Width = 75
|
||||
Caption = 'OK'
|
||||
OnClick = btnOKClick
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnCancel: TButton
|
||||
Left = 597
|
||||
Height = 25
|
||||
Top = 40
|
||||
Width = 75
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
TabOrder = 3
|
||||
end
|
||||
end
|
192
src/fRbnFilter.pas
Normal file
192
src/fRbnFilter.pas
Normal file
@ -0,0 +1,192 @@
|
||||
unit fRbnFilter;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
ExtCtrls, Buttons, lclType;
|
||||
|
||||
type
|
||||
|
||||
{ TfrmRbnFilter }
|
||||
|
||||
TfrmRbnFilter = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
Bevel2: TBevel;
|
||||
btnOK: TButton;
|
||||
btnCancel: TButton;
|
||||
btnDXCCnty: TButton;
|
||||
btnDXCNotCnty: TButton;
|
||||
chkNewDXConly: TCheckBox;
|
||||
chkOnlyeQSL: TCheckBox;
|
||||
chkOnlyLoTW: TCheckBox;
|
||||
edtDXCnty: TEdit;
|
||||
edtDXCNotCnty: TEdit;
|
||||
edtDate: TEdit;
|
||||
edtDXOnlyCall: TEdit;
|
||||
edtDXOnlyExpres: TEdit;
|
||||
edtDXBand: TEdit;
|
||||
edtDXMode: TEdit;
|
||||
edtDXCont: TEdit;
|
||||
edtLastHours: TEdit;
|
||||
edtSrcCont: TEdit;
|
||||
edtTime: TEdit;
|
||||
GroupBox3: TGroupBox;
|
||||
GroupBox4: TGroupBox;
|
||||
GroupBox5: TGroupBox;
|
||||
Label1: TLabel;
|
||||
Label10: TLabel;
|
||||
Label11: TLabel;
|
||||
Label12: TLabel;
|
||||
Label13: TLabel;
|
||||
Label14: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
Label4: TLabel;
|
||||
Label5: TLabel;
|
||||
Label6: TLabel;
|
||||
Label7: TLabel;
|
||||
Label8: TLabel;
|
||||
Label9: TLabel;
|
||||
rbAllDx: TRadioButton;
|
||||
rbOnlyCall: TRadioButton;
|
||||
rbOnlyCallReg: TRadioButton;
|
||||
rbIgnWkdDate: TRadioButton;
|
||||
rbIgnWkdHour: TRadioButton;
|
||||
procedure btnOKClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
frmRbnFilter: TfrmRbnFilter;
|
||||
|
||||
implementation
|
||||
|
||||
uses uMyIni, dUtils;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfrmRbnFilter }
|
||||
|
||||
procedure TfrmRbnFilter.FormShow(Sender: TObject);
|
||||
begin
|
||||
dmUtils.LoadFontSettings(self);
|
||||
|
||||
edtSrcCont.Text := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT);
|
||||
|
||||
rbIgnWkdHour.Checked := cqrini.ReadBool('RBNFilter','IgnHour',True);
|
||||
edtLastHours.Text := IntToStr(cqrini.ReadInteger('RBNFilter','IgnHourValue',48));
|
||||
rbIgnWkdDate.Checked := cqrini.ReadBool('RBNFilter','IgnDate',False);
|
||||
edtDate.Text := cqrini.ReadString('RBNFilter','IgnDateValue','');
|
||||
edtTime.Text := cqrini.ReadString('RBNFilter','IgnTimeValue','');
|
||||
|
||||
rbAllDx.Checked := cqrini.ReadBool('RBNFilter','AllowAllCall',True);
|
||||
rbOnlyCall.Checked := cqrini.ReadBool('RBNFilter','AllowOnlyCall',False);
|
||||
edtDXOnlyCall.Text := cqrini.ReadString('RBNFilter','AllowOnlyCallValue','');
|
||||
rbOnlyCallReg.Checked := cqrini.ReadBool('RBNFilter','AllowOnlyCallReg',False);
|
||||
edtDXOnlyExpres.Text := cqrini.ReadString('RBNFilter','AllowOnlyCallRegValue','');
|
||||
|
||||
edtDXCont.Text := cqrini.ReadString('RBNFilter','AllowCont',C_RBN_CONT);
|
||||
edtDXBand.Text := cqrini.ReadString('RBNFilter','AllowBands',C_RBN_BANDS);
|
||||
edtDXMode.Text := cqrini.ReadString('RBNFilter','AllowModes',C_RBN_MODES);
|
||||
edtDXCnty.Text := cqrini.ReadString('RBNFilter','AllowCnty','');
|
||||
edtDXCNotCnty.Text := cqrini.ReadString('RBNFilter','NotCnty','');
|
||||
|
||||
chkOnlyLoTW.Checked := cqrini.ReadBool('RBNFilter','LoTWOnly',False);
|
||||
chkOnlyeQSL.Checked := cqrini.ReadBool('RBNFilter','eQSLOnly',False);
|
||||
|
||||
chkNewDXConly.Checked := cqrini.ReadBool('RBNFilter','NewDXCOnly',False)
|
||||
end;
|
||||
|
||||
procedure TfrmRbnFilter.btnOKClick(Sender: TObject);
|
||||
function RmSp(what : String) : String;
|
||||
begin
|
||||
Result := StringReplace(what,' ','',[rfReplaceAll, rfIgnoreCase])
|
||||
end;
|
||||
|
||||
var
|
||||
i : Integer;
|
||||
begin
|
||||
if not TryStrToInt(edtLastHours.Text,i) then
|
||||
begin
|
||||
if rbIgnWkdHour.Checked then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct number of hours, please','Error...',mb_OK+mb_IconError);
|
||||
edtLastHours.SetFocus;
|
||||
exit
|
||||
end
|
||||
else
|
||||
edtLastHours.Text := '48'
|
||||
end;
|
||||
|
||||
if not dmUtils.IsDateOK(edtDate.Text) then
|
||||
begin
|
||||
if rbIgnWkdDate.Checked then
|
||||
begin
|
||||
Application.MessageBox('Enter date in correct format, please','Error...',mb_Ok+mb_IconError);
|
||||
edtDate.SetFocus;
|
||||
exit
|
||||
end
|
||||
else
|
||||
edtDate.Text := ''
|
||||
end;
|
||||
|
||||
if not (dmUtils.IsTimeOK(edtTime.Text)) then
|
||||
begin
|
||||
if rbIgnWkdDate.Checked then
|
||||
begin
|
||||
Application.MessageBox('Enter time in correct format, please','Error...',mb_Ok+mb_IconError);
|
||||
edtTime.SetFocus;
|
||||
exit
|
||||
end
|
||||
else
|
||||
edtTime.Text := ''
|
||||
end;
|
||||
|
||||
if (edtSrcCont.Text='') then
|
||||
edtSrcCont.Text := C_RBN_CONT;
|
||||
if (edtDXCont.Text='') then
|
||||
edtDXCont.Text := C_RBN_CONT;
|
||||
if (edtDXBand.Text='') then
|
||||
edtDXBand.Text := C_RBN_BANDS;
|
||||
if (edtDXMode.Text='') then
|
||||
edtDXMode.Text := C_RBN_MODES;
|
||||
|
||||
cqrini.WriteString('RBNFilter','SrcCont',RmSp(edtSrcCont.Text));
|
||||
|
||||
cqrini.WriteBool('RBNFilter','IgnHour',rbIgnWkdHour.Checked);
|
||||
cqrini.WriteInteger('RBNFilter','IgnHourValue',StrToint(edtLastHours.Text));
|
||||
cqrini.WriteBool('RBNFilter','IgnDate',rbIgnWkdDate.Checked);
|
||||
cqrini.WriteString('RBNFilter','IgnDateValue',edtDate.Text);
|
||||
cqrini.WriteString('RBNFilter','IgnTimeValue',edtTime.Text);
|
||||
|
||||
cqrini.WriteBool('RBNFilter','AllowAllCall',rbAllDx.Checked);
|
||||
cqrini.WriteBool('RBNFilter','AllowOnlyCall',rbOnlyCall.Checked);
|
||||
cqrini.WriteString('RBNFilter','AllowOnlyCallValue',RmSp(edtDXOnlyCall.Text));
|
||||
cqrini.WriteBool('RBNFilter','AllowOnlyCallReg',rbOnlyCallReg.Checked);
|
||||
cqrini.WriteString('RBNFilter','AllowOnlyCallRegValue',edtDXOnlyExpres.Text);
|
||||
|
||||
cqrini.WriteString('RBNFilter','AllowCont',RmSp(edtDXCont.Text));
|
||||
cqrini.WriteString('RBNFilter','AllowBands',RmSp(edtDXBand.Text));
|
||||
cqrini.WriteString('RBNFilter','AllowModes',RmSp(edtDXMode.Text));
|
||||
cqrini.WriteString('RBNFilter','AllowCnty',RmSp(edtDXCnty.Text));
|
||||
cqrini.WriteString('RBNFilter','NotCnty',RmSp(edtDXCNotCnty.Text));
|
||||
|
||||
cqrini.WriteBool('RBNFilter','LoTWOnly',chkOnlyLoTW.Checked);
|
||||
cqrini.WriteBool('RBNFilter','eQSLOnly',chkOnlyeQSL.Checked);
|
||||
|
||||
cqrini.WriteBool('RBNFilter','NewDXCOnly',chkNewDXConly.Checked);
|
||||
|
||||
ModalResult := mrOK
|
||||
end;
|
||||
|
||||
{ TfrmRbnFilter }
|
||||
|
||||
end.
|
||||
|
461
src/fRbnMonitor.lfm
Normal file
461
src/fRbnMonitor.lfm
Normal file
@ -0,0 +1,461 @@
|
||||
object frmRbnMonitor: TfrmRbnMonitor
|
||||
Left = 488
|
||||
Height = 602
|
||||
Top = 232
|
||||
Width = 665
|
||||
ActiveControl = btnEatFocus
|
||||
Caption = 'RBN Monitor'
|
||||
ClientHeight = 602
|
||||
ClientWidth = 665
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
OnShow = FormShow
|
||||
LCLVersion = '1.2.4.0'
|
||||
object ToolBar1: TToolBar
|
||||
Left = 0
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 665
|
||||
Caption = 'ToolBar1'
|
||||
Images = imgRbnMonitor
|
||||
ParentShowHint = False
|
||||
ShowHint = True
|
||||
TabOrder = 0
|
||||
object tbtnConnect: TToolButton
|
||||
Left = 1
|
||||
Top = 2
|
||||
Action = acConnect
|
||||
AutoSize = True
|
||||
end
|
||||
object ToolButton2: TToolButton
|
||||
Left = 24
|
||||
Top = 2
|
||||
Width = 10
|
||||
Caption = 'ToolButton2'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object ToolButton3: TToolButton
|
||||
Left = 34
|
||||
Top = 2
|
||||
Action = acRbnServer
|
||||
end
|
||||
object ToolButton4: TToolButton
|
||||
Left = 57
|
||||
Top = 2
|
||||
Width = 10
|
||||
Caption = 'ToolButton4'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object ToolButton5: TToolButton
|
||||
Left = 67
|
||||
Top = 2
|
||||
Action = acFilter
|
||||
end
|
||||
object ToolButton6: TToolButton
|
||||
Left = 100
|
||||
Top = 2
|
||||
Action = acFontSettings
|
||||
end
|
||||
object ToolButton7: TToolButton
|
||||
Left = 90
|
||||
Top = 2
|
||||
Width = 10
|
||||
Caption = 'ToolButton7'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object ToolButton1: TToolButton
|
||||
Left = 123
|
||||
Top = 2
|
||||
Width = 5
|
||||
Caption = 'ToolButton1'
|
||||
Style = tbsDivider
|
||||
end
|
||||
object ToolButton8: TToolButton
|
||||
Left = 128
|
||||
Top = 2
|
||||
Action = acScrollDown
|
||||
end
|
||||
object ToolButton9: TToolButton
|
||||
Left = 151
|
||||
Top = 2
|
||||
Width = 10
|
||||
Caption = 'ToolButton9'
|
||||
Style = tbsSeparator
|
||||
end
|
||||
object ToolButton10: TToolButton
|
||||
Left = 161
|
||||
Top = 2
|
||||
Action = acHelp
|
||||
end
|
||||
object btnEatFocus: TButton
|
||||
Left = 184
|
||||
Height = 22
|
||||
Top = 2
|
||||
Width = 2
|
||||
Caption = 'btnEatFocus'
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
object sbRbn: TStatusBar
|
||||
Left = 0
|
||||
Height = 21
|
||||
Top = 581
|
||||
Width = 665
|
||||
Panels = <
|
||||
item
|
||||
Width = 50
|
||||
end>
|
||||
SimplePanel = False
|
||||
end
|
||||
object sgRbn: TStringGrid
|
||||
Left = 0
|
||||
Height = 556
|
||||
Top = 25
|
||||
Width = 665
|
||||
Align = alClient
|
||||
ColCount = 7
|
||||
FixedCols = 0
|
||||
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColSizing, goSmoothScroll, goScrollKeepVisible]
|
||||
TabOrder = 2
|
||||
OnDblClick = sgRbnDblClick
|
||||
OnDrawCell = sgRbnDrawCell
|
||||
OnHeaderSized = sgRbnHeaderSized
|
||||
ColWidths = (
|
||||
64
|
||||
64
|
||||
64
|
||||
45
|
||||
22
|
||||
24
|
||||
20
|
||||
)
|
||||
Cells = (
|
||||
14
|
||||
0
|
||||
0
|
||||
'Source'
|
||||
0
|
||||
1
|
||||
'OK2CQR'
|
||||
1
|
||||
0
|
||||
'Freq'
|
||||
1
|
||||
1
|
||||
'14025.3'
|
||||
2
|
||||
0
|
||||
'DX'
|
||||
2
|
||||
1
|
||||
'WL7E'
|
||||
3
|
||||
0
|
||||
'Mode'
|
||||
3
|
||||
1
|
||||
'CW'
|
||||
4
|
||||
0
|
||||
'Q'
|
||||
4
|
||||
1
|
||||
'LE'
|
||||
5
|
||||
0
|
||||
'dB'
|
||||
5
|
||||
1
|
||||
'40'
|
||||
6
|
||||
0
|
||||
'D'
|
||||
6
|
||||
1
|
||||
'N'
|
||||
)
|
||||
end
|
||||
object acRbnMonitor: TActionList
|
||||
Images = imgRbnMonitor
|
||||
left = 344
|
||||
top = 72
|
||||
object acConnect: TAction
|
||||
Caption = 'Connect'
|
||||
Hint = 'Connect to RBN server'
|
||||
ImageIndex = 0
|
||||
OnExecute = acConnectExecute
|
||||
end
|
||||
object acDisconnect: TAction
|
||||
Caption = 'Disconnect'
|
||||
Hint = 'Disconnect from RBN server'
|
||||
ImageIndex = 1
|
||||
OnExecute = acDisconnectExecute
|
||||
end
|
||||
object acFontSettings: TAction
|
||||
Caption = 'Font settings'
|
||||
Hint = 'Font settings'
|
||||
ImageIndex = 3
|
||||
OnExecute = acFontSettingsExecute
|
||||
end
|
||||
object acFilter: TAction
|
||||
Caption = 'Filter'
|
||||
Hint = 'Filter criteria'
|
||||
ImageIndex = 2
|
||||
OnExecute = acFilterExecute
|
||||
end
|
||||
object acRbnServer: TAction
|
||||
Caption = 'Change RBN server address'
|
||||
Hint = 'Change RBN server address'
|
||||
ImageIndex = 4
|
||||
OnExecute = acRbnServerExecute
|
||||
end
|
||||
object acScrollDown: TAction
|
||||
Caption = 'Sroll down'
|
||||
ImageIndex = 5
|
||||
OnExecute = acScrollDownExecute
|
||||
end
|
||||
object acHelp: TAction
|
||||
Caption = 'Help'
|
||||
ImageIndex = 6
|
||||
OnExecute = acHelpExecute
|
||||
end
|
||||
end
|
||||
object imgRbnMonitor: TImageList
|
||||
left = 344
|
||||
top = 128
|
||||
Bitmap = {
|
||||
4C69070000001000000010000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000D0F0F120D0F0F4D000000FF0000
|
||||
00FF0D0F0F22000000FF000000FF000000000000000000000000000000000000
|
||||
000000000000000000000D0F0F0B0000006C000000DD000000FF899398FF747D
|
||||
80FF000000FFBAC2C6FF747D80FF000000000000000000000000000000000000
|
||||
000000000000000000000D0F0F6C2D3334FFAAB3B7FFBDC2C4FFE3E8EAFF747D
|
||||
80FF000000FFE3E8EAFF747D80FF000000000000000000000000000000000000
|
||||
0000000000000D0F0F12000000FFDDE1E2FFECEFF0FFA0A7AAFFE3E8EAFF747D
|
||||
80FF000000FFEBEEF0FF747D80FF000000FF000000FF000000FF000000FF0000
|
||||
00FF000000FF000000FF747D80FFDDE1E2FFECEFF0FFA0A7AAFFE3E8EAFF747D
|
||||
80FF000000FFEBEEF0FF747D80FFE3E8EAFFE3E8EAFFE3E8EAFFE3E8EAFFE3E8
|
||||
EAFFE3E8EAFFE3E8EAFFE3E8EAFFEDF0F2FFE6EAEBFF7B858AFFE8EBECFF747D
|
||||
80FF000000FFEAECEEFF747D80FF747D80FF747D80FF747D80FF747D80FF747D
|
||||
80FF747D80FF6B7578FF6B7578FFB5BBBEFFAAB1B3FF6E787DFFDBDFE1FF6B75
|
||||
78FF000000FFCCD0D1FF747D80FF000000FF000000FF000000FF000000FF0000
|
||||
00FF000000FF010101FF6B7578FF81898CFF9BA2A6FF636D72FFC3CACEFF6B75
|
||||
78FF000000FF9EA4A7FF747D80FF000000000000000000000000000000000000
|
||||
0000000000000D0F0F330D0F0FFF81898CFF9BA2A6FF636D72FFC3CACEFF6B75
|
||||
78FF000000FF9EA4A7FF747D80FF000000000000000000000000000000000000
|
||||
000000000000000000000D0F0F9033393CFF7E878BFF626C70FFA4ADB1FF5E68
|
||||
6CFF000000FF8A9397FF747D80FF000000000000000000000000000000000000
|
||||
000000000000000000000D0F0F090000005E0D0F0FC00D0F0FFF899398FF5660
|
||||
64FF000000FF7D878BFF747D80FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000D0F0F1B0D0F0F330D0F0FFF0D0F
|
||||
0FFF0D0F0F320D0F0FFF000000FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000000D0F0F4D000000FF000000FF0D0F0F220000
|
||||
00000D0F0F000D0F0F000D0F0F0000000000000000000D0F0F00000000000000
|
||||
000000000038000000FF000000FF000000FF899398FF747D80FF000000FF747D
|
||||
800000000000000000000000000089939800747D800000000000BAC2C600747D
|
||||
8000000000FFBAC2C6FF747D80FFBDC2C4FFE3E8EAFF747D80FF000000FF0000
|
||||
00FF000000FF000000FF00000038000000000000000000000000E3E8EA00747D
|
||||
8000000000FFE3E8EAFF747D80FFA0A7AAFFE3E8EAFF747D80FF000000FFC8D2
|
||||
C5FFC8D2C5FFEAEEE9FF000000FFEAEEE9000000000000000000EBEEF000747D
|
||||
8000000000FFEBEEF0FF747D80FFA0A7AAFFE3E8EAFF747D80FF000000FF0000
|
||||
00FF000000FF000000FF00000038000000000000000000000000EBEEF000747D
|
||||
8000000000FFEBEEF0FF747D80FF7B858AFFE8EBECFF747D80FF000000FF747D
|
||||
800000000000E6EAEB007B858A00E8EBEC00747D800000000000EAECEE00747D
|
||||
8000000000FFEAECEEFF747D80FF6E787DFFDBDFE1FF6B7578FF000000FF6B75
|
||||
780000000000AAB1B3006E787D00DBDFE1006B75780000000000CCD0D100747D
|
||||
8000000000FFCCD0D1FF747D80FF636D72FFC3CACEFF6B7578FF000000FF0000
|
||||
00FF000000FF000000FF000000380000000000000000000000009EA4A700747D
|
||||
8000000000FF9EA4A7FF747D80FF636D72FFC3CACEFF6B7578FF000000FFC8D2
|
||||
C5FFC8D2C5FFF1F3F0FF000000FFF1F3F00000000000000000009EA4A700747D
|
||||
8000000000FF9EA4A7FF747D80FF626C70FFA4ADB1FF5E686CFF000000FF0000
|
||||
00FF000000FF000000FF000000380000000000000000000000008A939700747D
|
||||
8000000000FF8A9397FF747D80FF0D0F0FFF899398FF566064FF000000FF5660
|
||||
6400000000000D0F0F000D0F0F008993980056606400000000007D878B00747D
|
||||
8000000000FF7D878BFF747D80FF0D0F0F330D0F0FFF0D0F0FFF0D0F0F320D0F
|
||||
0F000D0F0F000D0F0F000D0F0F000D0F0F000D0F0F000D0F0F000D0F0F000000
|
||||
0000000000380D0F0FFF000000FF000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
FFFF0000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
FFFF0000FFFF00000000000000FF000000FF0000000000000000000000000000
|
||||
00000000000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000000FF000000FF0000000000000000000000000000
|
||||
00000000000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF0000
|
||||
FFFF0000FFFF0000FFFF000000FF000000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
FFFF0000FFFF00000000000000FF000000FF0000000000000000000000000000
|
||||
0000FF0000FF0000000000000000000000000000000000000000000000000000
|
||||
FFFF0000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000FF0000FFFF0000FF00000000FF0000FFFF0000FFFF0000FFFF0000FFFF00
|
||||
00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00
|
||||
00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00
|
||||
00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00
|
||||
00FFFF0000FFFF0000FFFF0000FF000000000000000000000000000000000000
|
||||
00000000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000FF0000FFFF0000FF000000000000000000000000000000000000000000C4
|
||||
00FF0000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000FF0000FF00000000000000000000000000000000000000000000000000C4
|
||||
00FF00C400FF00000000000000FF000000FF0000000000000000000000000000
|
||||
000000000000000000000000000000C400FF00C400FF00C400FF00C400FF00C4
|
||||
00FF00C400FF00C400FF000000FF000000FF0000000000000000000000000000
|
||||
000000000000000000000000000000C400FF00C400FF00C400FF00C400FF00C4
|
||||
00FF00C400FF00C400FF000000FF000000FF0000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000C4
|
||||
00FF00C400FF00000000000000FF000000FF0000000000000000000000000000
|
||||
00000000000000000000000000000000000000000000000000000000000000C4
|
||||
00FF0000000000000000000000FF000000FF0000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
000000000000000000000000000000000000000000000000000000000000A364
|
||||
3310A46635FBA36433FFA36433FFA36433FFA36433FFA46635FBA36433100000
|
||||
000000000000000000000000000000000000000000000000000000000000A365
|
||||
3475C9A282FDF6EEE7FFF7EFE8FFF7EFE8FFF6EEE7FFC69E7DFDA36534750000
|
||||
0000000000000000000000000000000000000000000000000000A2633202A466
|
||||
36F9EDDDD0FFE1C3A8FFC09067FDC09067FDDCBEA1FFDDC6B3FFA46636F9A263
|
||||
32020000000000000000000000000000000000000000000000009F603043B887
|
||||
62FCF1E5DAFFD6B08CFFA16434FDA16434FDD5AD88FFDBC1ACFFAC754BFC9F60
|
||||
30440000000000000000000000000000000000000000000000009F6335D4D9C0
|
||||
AAFFDFC5ACFFC3956EFF9F6234E19F6234E0C08D64FFD3AB89FFC0936FFF9F61
|
||||
33D400000000000000000000000000000000000000009A5B2D1DA0663AFDE0CF
|
||||
BFFFD8B18DFFA66B3FFC9A5B2D519A5B2D51A5693CFCCF9C71FFCB9B75FF9B5D
|
||||
2FFD9A5B2D1D00000000000000000000000000000000995C2F95BE9677FED7B8
|
||||
9DFFCB9A72FF995B2DFC97592B0697592B06985B2DFCC58B5CFFCB9060FFAD6F
|
||||
40FE995A2C970000000000000000000000009456290796582CFCCFAF94FFD1A4
|
||||
7EFFBF895EFF945629FF945629FF945629FF945629FFBA7C4CFFC98856FFC07D
|
||||
4AFF95572AFC9456290700000000000000009154275AA6714AFCD0A785FFD09A
|
||||
6EFFD29F75FFD9AD89FFDEB99BFFE5C7B0FFECD6C5FFECD6C6FFC6804BFFC67F
|
||||
49FF9E5E2FFC9154275A0000000000000000925529EEBC8B65FFCD976CFFCD92
|
||||
63FFCB8E5EFFCA8B59FFC98754FFC7834FFFC6804AFFC67F49FFC67F49FFC67F
|
||||
49FFB5713EFF925327EE000000008C4F232D91562BFCCA9266FFCB8E5DFF9D60
|
||||
32FC8C4F23FF8C4F23FF8C4F23FF8C4F23FF8C4F23FF8C4F23FF9C5C2DFCC67F
|
||||
49FFC57E48FF915326FC8C4F232D8C4F24B7AC6E41FFCA8A58FFBE7D4BFF8B4D
|
||||
22FC894C210600000000000000000000000000000000894C21068B4D22FCBD77
|
||||
43FFC67F49FFA96736FF8C4E23B78A4D22E9874A20FF874A20FF874A20FF894C
|
||||
21830000000000000000000000000000000000000000000000008A4C2285874A
|
||||
20FF874A20FF874A20FF8A4C22E9000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000005E5E5E7D5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5E7D00000000000000000000
|
||||
00000000000000000000000000005E5E5E7D979797FFEDEDEDFFEDEDEDFFEDED
|
||||
EDFFEDEDEDFFEDEDEDFFEDEDEDFFEDEDEDFFA6A6A6FF5E5E5E7D000000000000
|
||||
00000000000000000000000000005E5E5EFFEDEDEDFFD8D8D8FF7B7B7BFF7B7B
|
||||
7BFF7B7B7BFF7B7B7BFF7B7B7BFFA4A4A4FFE6E6E6FF5E5E5EFF000000000000
|
||||
00000000000000000000000000005E5E5EFFF3F3F3FF7B7B7BFFF6F5F5FFF6F5
|
||||
F5FFF6F5F5FF9A9A9AFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5EFF5E5E5E5C000000005E5E5EFFF0F0F0FF7B7B7BFFCF9F72FFCF9F
|
||||
72FF7F7778FFBABABAFFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
|
||||
F0FFF0F0F0FFBABABAFF5E5E5E7D5E5E5EFFEEEEEEFF7B7B7BFFCF9F72FFCF9F
|
||||
72FF5E5E5EFFF0F0F0FFD8D8D8FF7B7B7BFF7B7B7BFF7B7B7BFF7B7B7BFF7B7B
|
||||
7BFFA4A4A4FFF0F0F0FF5E5E5EFF5E5E5EFFEDEDEDFF7B7B7BFFCF9F72FFCF9F
|
||||
72FF5E5E5EFFF0F0F0FF7B7B7BFFF6F5F5FFF6F5F5FFC5C0C0FFC5C0C0FFF4F3
|
||||
F3FF7B7B7BFFF0F0F0FF5E5E5EFF5E5E5EFFF3F3F3FFD3D3D3FF7B7B7BFF7B7B
|
||||
7BFF5E5E5EFFF0F0F0FF7B7B7BFFCF9F72FFCF9F72FFF6F5F5FFF5F5F5FFCF9F
|
||||
72FF7B7B7BFFF0F0F0FF5E5E5EFF5E5E5EDDEDEDEDFFEDEDEDFFEDEDEDFFEDED
|
||||
EDFF5E5E5EFFF0F0F0FF7B7B7BFFCF9F72FFCF9F72FFEBEAEAFFEBEAEAFFCF9F
|
||||
72FF7B7B7BFFF0F0F0FF5E5E5EFF5E5E5E7D5E5E5EFF5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5EFFF0F0F0FF7B7B7BFFCF9F72FFCF9F72FFCF9F72FFCF9F72FFCF9F
|
||||
72FF7B7B7BFFF0F0F0FF5E5E5EFF5E5E5EFFF3F3F3FFF0F0F0FFD1D1D1FFEBEB
|
||||
EBFF5E5E5EFFF0F0F0FFD3D3D3FF7B7B7BFF7B7B7BFF7B7B7BFF7B7B7BFF7B7B
|
||||
7BFFC0C0C0FFF0F0F0FF5E5E5EFF5E5E5EFFD9D9D9FFC1C1C1FFB7B7B7FFBCBC
|
||||
BCFF585858FFBABABAFFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0F0FFF0F0
|
||||
F0FFF0F0F0FFBABABAFF5E5E5EFF1415159F5E5E5EFF5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5E975E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5EFF5E5E5EFF5E5E5E97000000000000000000000000000000000000
|
||||
00005E5E5EFFF3F3F3FFF0F0F0FFD1D1D1FFEBEBEBFFEBEBEBFFC8C8C8FFC5C5
|
||||
C5FFC5C5C5FFE8E8E8FF5E5E5EFF000000000000000000000000000000000000
|
||||
00005E5E5EFFD9D9D9FFC1C1C1FFB7B7B7FFBCBCBCFFBCBCBCFFB6B6B6FFD1D1
|
||||
D1FFD5D5D5FFC4C4C4FF5E5E5EFF000000000000000000000000000000000000
|
||||
00005E5E5E975E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E5EFF5E5E
|
||||
5EFF5E5E5EFF5E5E5EFF5E5E5E97FFFFFF00FFFFFF00FFFFFF00FFFFFF000474
|
||||
3AE804733AFF04733AFF04733AFF04733AFF04733AFF04733AFF04743AE8FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000473
|
||||
3AFFAEDEC6FFAADCC2FFA4DABEFF9FD8BBFF9AD6B7FF93D3B2FF04733AFFFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000473
|
||||
3AFFB0DFC7FF5DBD8CFF54B985FF49B57DFF3EB076FF8FD1AFFF04733AFFFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000473
|
||||
3AFFB1DFC7FF5EBE8DFF55BA86FF4AB57EFF3FB176FF8ACFACFF04733AFFFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000473
|
||||
3AFFB0DFC7FF5EBE8DFF54B985FF49B57DFF3EB076FF85CDA9FF04733AFFFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF0004753BC504733AFF04733AFF04733AFF0476
|
||||
3BF7AFDEC6FF5BBC8BFF52B884FF47B47CFF35AD70FF7FCBA4FF04763BF70473
|
||||
3AFF04733AFF04733AFF04753BC504733A65278956F6ACDCC4FFB2DFC8FFB0DE
|
||||
C7FFACDDC4FF58BD89FF4EBB84FF43B87CFF0FA458FF7FCEA5FF7ECDA4FF7ECC
|
||||
A4FF78C79FFF18824BF504733A65FFFFFF0004743BAC4DA478F89ED7BAFF61C0
|
||||
90FF5BC18DFF55C18AFF3AB978FF11AD5EFF0BAB59FF0AAA59FF0CA958FF68C7
|
||||
97FF349A65F804743BABFFFFFF00FFFFFF0004733A0C04743AE173BF98FE87D2
|
||||
ACFF56C38CFF30BA74FF0CB15DFF0DB45FFF0DB45FFF0DB35EFF4EC589FF55B7
|
||||
84FE04753BE104733A0CFFFFFF00FFFFFF00FFFFFF0004733A2D0B773EF68FD3
|
||||
B0FF5BC891FF0DB45FFF0FB962FF0FBC65FF10BD65FF32C57BFF71CE9FFF0A78
|
||||
3FF604733A2DFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0004733A65238A
|
||||
56F578D2A5FF1CBD6BFF11C067FF12C56AFF1FC973FF78DBA8FF1E8952F50473
|
||||
3A65FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000475
|
||||
3BAC3DA36FF969D59EFF12C469FF14CB6EFF6CE0A5FF3FA872F904763CABFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000473
|
||||
3A0C04763BE15DBF8DFE4CD18DFF4ED590FF5FC592FE04763CE104733A0CFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF0004733A2D0E7A42F674D1A2FF75D3A3FF0E7B42F604733A2DFFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF0004733AFF04733AFF04733AFF04733AFF0473
|
||||
3AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF0473
|
||||
3AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF0473
|
||||
3AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF04733AFF0473
|
||||
3AFF04733AFF04733AFF04733AFFFFFFFF00FFFFFF00E2A289A4D0927FD7D490
|
||||
78DAD39079DAD5927BDAD7947CDAD8947DDADB967FDADB9880DADC9A81DAE19F
|
||||
86DBD4937CAEFFFFFF00FFFFFF00FFFFFF00FFFFFF00B67A6CF5D79B88FFE5A0
|
||||
88FFE5A288FFE6A086FFE79F84FFE8A185FFEAA488FFEEAA8EFFF0AE93FFF4B2
|
||||
97FFCE8C76E7FFFFFF00FFFFFF00FFFFFF00FFFFFF00B27667F5D29784FFDE9B
|
||||
82FFDD9981FFEFCABBFFFBF1EEFFFBEFEBFFF9E9E3FFEDB6A2FFEAA589FFEFAC
|
||||
91FFCE8B75E7FFFFFF00FFFFFF00FFFFFF00FFFFFF00DDB6AFFACB8E7BFFD58B
|
||||
73FFFBF4F1FFFFFFFFFFF9F5F3FFF9EAE5FFFFFFFFFFFFFFFFFFE8B8A4FFEAA4
|
||||
8AFFCE8A74E7FFFFFF00FFFFFF00FFFFFF00FFFFFF00B07465F5C88C7AFFDFAC
|
||||
9CFFFFFFFFFFF8F2F0FFD28970FFD6896DFFEBC2B6FFFFFFFFFFEED8D1FFE19B
|
||||
82FFCE8B76E2FFFFFF00FFFFFF00FFFFFF00FFFFFF00B2796AF5C58A7BFFCC86
|
||||
6FFFE0B8ABFFC8856FFFCF876FFFE3B7A8FFFEFBFAFFFFFFFFFFD19A89FFDE9A
|
||||
81FFCB8772E2FFFFFF00FFFFFF00FFFFFF00FFFFFF00B27769F5C08676FFCA87
|
||||
73FFC88470FFCA846EFFE7C7BCFFFFFFFFFFFBF8F7FFCF9888FFD69178FFD896
|
||||
7FFFC6846FE2FFFFFF00FFFFFF00FFFFFF00FFFFFF00B17668F5BC8373FFC382
|
||||
6FFFC5836FFFC27A64FFFDFBFAFFFFFFFFFFC07B68FFCF8B73FFD18F79FFD391
|
||||
7BFFC37F6CE2FFFFFF00FFFFFF00FFFFFF00FFFFFF00AD7062F5B87D70FFBE7D
|
||||
69FFC07E6BFFBF7A66FFDFBCB1FFD9B5ACFFC67F68FFCA8873FFCC8A75FFCE8C
|
||||
76FFBF7D69E2FFFFFF00FFFFFF00FFFFFF00FFFFFF00DAB2AAFAAF7668FFB978
|
||||
65FFBB7967FFB76F5AFFFDFAFAFFFFFFFFFFC48573FFC3826EFFC68470FFC886
|
||||
72FFBD7966E1FFFFFF00FFFFFF00FFFFFF00FFFFFF00B4776AF5AE7568FFB373
|
||||
62FFB57462FFB4705DFFDDBEB4FFE7D1CCFFBB7966FFBF7D69FFC17F6CFFC381
|
||||
6DFFBA7664F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00AF7467F5AD7568FFB070
|
||||
5EFFB27160FFB47462FFB36E5CFFB56F5DFFBB7866FFBD7B68FFBF7D6BFFC17F
|
||||
6BFFB87563F7FFFFFF00FFFFFF00FFFFFF00FFFFFF0096574BF589463BFF8A44
|
||||
37FF8B4437FF8C4538FF8D4639FF8E4739FF8F483AFF90493BFF914A3CFF924B
|
||||
3DFF9A5547F0FFFFFF00FFFFFF00FFFFFF00FFFFFF00784641F5DBDCDCFFD4DC
|
||||
DCFFD4DCDCFFD4DCDCFFD3DCDCFFD3DCDCFFD3DCDCFFD3DCDCFFD3DCDCFFD6DC
|
||||
DCFFB0928B8BFFFFFF00FFFFFF00FFFFFF00FFFFFF0095564AFB89463BFF8A44
|
||||
37FF8B4437FF8C4538FF8D4639FF8E4739FF8F483AFF90493BFF914A3CFF924B
|
||||
3DFF985346F8FFFFFF00FFFFFF00FFFFFF00BB6A346BBA6530BCBB6631EDBA66
|
||||
30F7BA6630F7BA6630F7BA6530F7BA652FF7B9652EF7B9652EF7B9642EF7B964
|
||||
2EEFB7622CBDB7622E63FFFFFF00
|
||||
}
|
||||
end
|
||||
object dlgFont: TFontDialog
|
||||
MinFontSize = 0
|
||||
MaxFontSize = 0
|
||||
left = 122
|
||||
top = 215
|
||||
end
|
||||
end
|
328
src/fRbnMonitor.lrs
Normal file
328
src/fRbnMonitor.lrs
Normal file
@ -0,0 +1,328 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TfrmRbnMonitor','FORMDATA',[
|
||||
'TPF0'#14'TfrmRbnMonitor'#13'frmRbnMonitor'#4'Left'#3#232#1#6'Height'#3'Z'#2#3
|
||||
+'Top'#3#232#0#5'Width'#3#153#2#13'ActiveControl'#7#11'btnEatFocus'#7'Caption'
|
||||
+#6#11'RBN Monitor'#12'ClientHeight'#3'Z'#2#11'ClientWidth'#3#153#2#7'OnClose'
|
||||
+#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#6
|
||||
+'OnShow'#7#8'FormShow'#10'LCLVersion'#6#7'1.2.4.0'#0#8'TToolBar'#8'ToolBar1'
|
||||
+#4'Left'#2#0#6'Height'#2#25#3'Top'#2#0#5'Width'#3#153#2#7'Caption'#6#8'ToolB'
|
||||
+'ar1'#6'Images'#7#13'imgRbnMonitor'#14'ParentShowHint'#8#8'ShowHint'#9#8'Tab'
|
||||
+'Order'#2#0#0#11'TToolButton'#11'tbtnConnect'#4'Left'#2#1#3'Top'#2#2#6'Actio'
|
||||
+'n'#7#9'acConnect'#8'AutoSize'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'
|
||||
+#2#24#3'Top'#2#2#5'Width'#2#10#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tb'
|
||||
+'sSeparator'#0#0#11'TToolButton'#11'ToolButton3'#4'Left'#2'"'#3'Top'#2#2#6'A'
|
||||
+'ction'#7#11'acRbnServer'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#2'9'#3
|
||||
+'Top'#2#2#5'Width'#2#10#7'Caption'#6#11'ToolButton4'#5'Style'#7#12'tbsSepara'
|
||||
+'tor'#0#0#11'TToolButton'#11'ToolButton5'#4'Left'#2'C'#3'Top'#2#2#6'Action'#7
|
||||
+#8'acFilter'#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#2'd'#3'Top'#2#2#6'A'
|
||||
+'ction'#7#14'acFontSettings'#0#0#11'TToolButton'#11'ToolButton7'#4'Left'#2'Z'
|
||||
+#3'Top'#2#2#5'Width'#2#10#7'Caption'#6#11'ToolButton7'#5'Style'#7#12'tbsSepa'
|
||||
+'rator'#0#0#11'TToolButton'#11'ToolButton1'#4'Left'#2'{'#3'Top'#2#2#5'Width'
|
||||
+#2#5#7'Caption'#6#11'ToolButton1'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButt'
|
||||
+'on'#11'ToolButton8'#4'Left'#3#128#0#3'Top'#2#2#6'Action'#7#12'acScrollDown'
|
||||
+#0#0#11'TToolButton'#11'ToolButton9'#4'Left'#3#151#0#3'Top'#2#2#5'Width'#2#10
|
||||
+#7'Caption'#6#11'ToolButton9'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'
|
||||
+#12'ToolButton10'#4'Left'#3#161#0#3'Top'#2#2#6'Action'#7#6'acHelp'#0#0#7'TBu'
|
||||
+'tton'#11'btnEatFocus'#4'Left'#3#184#0#6'Height'#2#22#3'Top'#2#2#5'Width'#2#2
|
||||
+#7'Caption'#6#11'btnEatFocus'#8'TabOrder'#2#0#0#0#0#10'TStatusBar'#5'sbRbn'#4
|
||||
+'Left'#2#0#6'Height'#2#21#3'Top'#3'E'#2#5'Width'#3#153#2#6'Panels'#14#1#5'Wi'
|
||||
+'dth'#2'2'#0#0#11'SimplePanel'#8#0#0#11'TStringGrid'#5'sgRbn'#4'Left'#2#0#6
|
||||
+'Height'#3','#2#3'Top'#2#25#5'Width'#3#153#2#5'Align'#7#8'alClient'#8'ColCou'
|
||||
+'nt'#2#7#9'FixedCols'#2#0#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLi'
|
||||
+'ne'#10'goVertLine'#10'goHorzLine'#11'goColSizing'#14'goSmoothScroll'#19'goS'
|
||||
+'crollKeepVisible'#0#8'TabOrder'#2#2#10'OnDblClick'#7#13'sgRbnDblClick'#10'O'
|
||||
+'nDrawCell'#7#13'sgRbnDrawCell'#13'OnHeaderSized'#7#16'sgRbnHeaderSized'#9'C'
|
||||
+'olWidths'#1#2'@'#2'@'#2'@'#2'-'#2#22#2#24#2#20#0#5'Cells'#1#2#14#2#0#2#0#6#6
|
||||
+'Source'#2#0#2#1#6#6'OK2CQR'#2#1#2#0#6#4'Freq'#2#1#2#1#6#7'14025.3'#2#2#2#0#6
|
||||
+#2'DX'#2#2#2#1#6#4'WL7E'#2#3#2#0#6#4'Mode'#2#3#2#1#6#2'CW'#2#4#2#0#6#1'Q'#2#4
|
||||
+#2#1#6#2'LE'#2#5#2#0#6#2'dB'#2#5#2#1#6#2'40'#2#6#2#0#6#1'D'#2#6#2#1#6#1'N'#0
|
||||
+#0#0#11'TActionList'#12'acRbnMonitor'#6'Images'#7#13'imgRbnMonitor'#4'left'#3
|
||||
+'X'#1#3'top'#2'H'#0#7'TAction'#9'acConnect'#7'Caption'#6#7'Connect'#4'Hint'#6
|
||||
+#21'Connect to RBN server'#10'ImageIndex'#2#0#9'OnExecute'#7#16'acConnectExe'
|
||||
+'cute'#0#0#7'TAction'#12'acDisconnect'#7'Caption'#6#10'Disconnect'#4'Hint'#6
|
||||
+#26'Disconnect from RBN server'#10'ImageIndex'#2#1#9'OnExecute'#7#19'acDisco'
|
||||
+'nnectExecute'#0#0#7'TAction'#14'acFontSettings'#7'Caption'#6#13'Font settin'
|
||||
+'gs'#4'Hint'#6#13'Font settings'#10'ImageIndex'#2#3#9'OnExecute'#7#21'acFont'
|
||||
+'SettingsExecute'#0#0#7'TAction'#8'acFilter'#7'Caption'#6#6'Filter'#4'Hint'#6
|
||||
+#15'Filter criteria'#10'ImageIndex'#2#2#9'OnExecute'#7#15'acFilterExecute'#0
|
||||
+#0#7'TAction'#11'acRbnServer'#7'Caption'#6#25'Change RBN server address'#4'H'
|
||||
+'int'#6#25'Change RBN server address'#10'ImageIndex'#2#4#9'OnExecute'#7#18'a'
|
||||
+'cRbnServerExecute'#0#0#7'TAction'#12'acScrollDown'#7'Caption'#6#10'Sroll do'
|
||||
+'wn'#10'ImageIndex'#2#5#9'OnExecute'#7#19'acScrollDownExecute'#0#0#7'TAction'
|
||||
+#6'acHelp'#7'Caption'#6#4'Help'#10'ImageIndex'#2#6#9'OnExecute'#7#13'acHelpE'
|
||||
+'xecute'#0#0#0#10'TImageList'#13'imgRbnMonitor'#4'left'#3'X'#1#3'top'#3#128#0
|
||||
+#6'Bitmap'#10#14#28#0#0'Li'#7#0#0#0#16#0#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#13#15#15#18#13#15#15'M'#0#0#0#255#0#0#0#255#13#15#15'"'#0#0#0#255#0#0#0#255
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#13#15#15#11#0#0#0'l'
|
||||
+#0#0#0#221#0#0#0#255#137#147#152#255't}'#128#255#0#0#0#255#186#194#198#255't'
|
||||
+'}'#128#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#13#15#15
|
||||
+'l-34'#255#170#179#183#255#189#194#196#255#227#232#234#255't}'#128#255#0#0#0
|
||||
+#255#227#232#234#255't}'#128#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#13#15#15#18#0#0#0#255#221#225#226#255#236#239#240#255#160#167#170#255
|
||||
+#227#232#234#255't}'#128#255#0#0#0#255#235#238#240#255't}'#128#255#0#0#0#255
|
||||
,#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255't}'#128#255#221
|
||||
+#225#226#255#236#239#240#255#160#167#170#255#227#232#234#255't}'#128#255#0#0
|
||||
+#0#255#235#238#240#255't}'#128#255#227#232#234#255#227#232#234#255#227#232
|
||||
+#234#255#227#232#234#255#227#232#234#255#227#232#234#255#227#232#234#255#227
|
||||
+#232#234#255#237#240#242#255#230#234#235#255'{'#133#138#255#232#235#236#255
|
||||
+'t}'#128#255#0#0#0#255#234#236#238#255't}'#128#255't}'#128#255't}'#128#255't'
|
||||
+'}'#128#255't}'#128#255't}'#128#255't}'#128#255'kux'#255'kux'#255#181#187#190
|
||||
+#255#170#177#179#255'nx}'#255#219#223#225#255'kux'#255#0#0#0#255#204#208#209
|
||||
+#255't}'#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
|
||||
+#1#1#1#255'kux'#255#129#137#140#255#155#162#166#255'cmr'#255#195#202#206#255
|
||||
+'kux'#255#0#0#0#255#158#164#167#255't}'#128#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#13#15#15'3'#13#15#15#255#129#137#140#255#155#162#166#255
|
||||
+'cmr'#255#195#202#206#255'kux'#255#0#0#0#255#158#164#167#255't}'#128#255#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#13#15#15#144'39<'#255'~'
|
||||
+#135#139#255'blp'#255#164#173#177#255'^hl'#255#0#0#0#255#138#147#151#255't}'
|
||||
+#128#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#13#15#15#9#0
|
||||
+#0#0'^'#13#15#15#192#13#15#15#255#137#147#152#255'V`d'#255#0#0#0#255'}'#135
|
||||
+#139#255't}'#128#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#13#15#15#27#13#15#15'3'#13#15#15#255#13#15#15#255#13#15#15
|
||||
+'2'#13#15#15#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#13#15#15'M'#0#0#0#255#0#0#0#255#13#15#15'"'#0#0#0#0#13#15#15#0#13#15
|
||||
+#15#0#13#15#15#0#0#0#0#0#0#0#0#0#13#15#15#0#0#0#0#0#0#0#0#0#0#0#0'8'#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255#137#147#152#255't}'#128#255#0#0#0#255't}'#128#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#137#147#152#0't}'#128#0#0#0#0#0#186#194#198#0't}'#128#0
|
||||
+#0#0#0#255#186#194#198#255't}'#128#255#189#194#196#255#227#232#234#255't}'
|
||||
+#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0'8'#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#227#232#234#0't}'#128#0#0#0#0#255#227#232#234#255't}'#128#255#160#167
|
||||
+#170#255#227#232#234#255't}'#128#255#0#0#0#255#200#210#197#255#200#210#197
|
||||
+#255#234#238#233#255#0#0#0#255#234#238#233#0#0#0#0#0#0#0#0#0#235#238#240#0't'
|
||||
+'}'#128#0#0#0#0#255#235#238#240#255't}'#128#255#160#167#170#255#227#232#234
|
||||
+#255't}'#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0'8'#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#235#238#240#0't}'#128#0#0#0#0#255#235#238#240#255't}'#128#255'{'
|
||||
+#133#138#255#232#235#236#255't}'#128#255#0#0#0#255't}'#128#0#0#0#0#0#230#234
|
||||
+#235#0'{'#133#138#0#232#235#236#0't}'#128#0#0#0#0#0#234#236#238#0't}'#128#0#0
|
||||
+#0#0#255#234#236#238#255't}'#128#255'nx}'#255#219#223#225#255'kux'#255#0#0#0
|
||||
+#255'kux'#0#0#0#0#0#170#177#179#0'nx}'#0#219#223#225#0'kux'#0#0#0#0#0#204#208
|
||||
+#209#0't}'#128#0#0#0#0#255#204#208#209#255't}'#128#255'cmr'#255#195#202#206
|
||||
+#255'kux'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0'8'#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#158#164#167#0't}'#128#0#0#0#0#255#158#164#167#255't}'#128#255'cmr'
|
||||
+#255#195#202#206#255'kux'#255#0#0#0#255#200#210#197#255#200#210#197#255#241
|
||||
+#243#240#255#0#0#0#255#241#243#240#0#0#0#0#0#0#0#0#0#158#164#167#0't}'#128#0
|
||||
+#0#0#0#255#158#164#167#255't}'#128#255'blp'#255#164#173#177#255'^hl'#255#0#0
|
||||
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0'8'#0#0#0#0#0#0#0#0#0#0#0#0#138#147
|
||||
+#151#0't}'#128#0#0#0#0#255#138#147#151#255't}'#128#255#13#15#15#255#137#147
|
||||
+#152#255'V`d'#255#0#0#0#255'V`d'#0#0#0#0#0#13#15#15#0#13#15#15#0#137#147#152
|
||||
+#0'V`d'#0#0#0#0#0'}'#135#139#0't}'#128#0#0#0#0#255'}'#135#139#255't}'#128#255
|
||||
+#13#15#15'3'#13#15#15#255#13#15#15#255#13#15#15'2'#13#15#15#0#13#15#15#0#13
|
||||
+#15#15#0#13#15#15#0#13#15#15#0#13#15#15#0#13#15#15#0#13#15#15#0#0#0#0#0#0#0#0
|
||||
+'8'#13#15#15#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#255#255
|
||||
+#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
|
||||
,#255#0#0#255#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
|
||||
+#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#255
|
||||
+#255#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#255#0#0#255
|
||||
+#0#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
|
||||
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
|
||||
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
|
||||
+#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
|
||||
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
|
||||
+#255#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#255#0#0#255#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#196#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0
|
||||
+#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#196#0#255#0#196#0#255#0#0#0#0#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#196#0#255#0#196#0
|
||||
+#255#0#196#0#255#0#196#0#255#0#196#0#255#0#196#0#255#0#196#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#196#0#255
|
||||
+#0#196#0#255#0#196#0#255#0#196#0#255#0#196#0#255#0#196#0#255#0#196#0#255#0#0
|
||||
+#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#196#0#255#0#196#0#255#0#0#0#0#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#196#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#163'd3'#16#164'f5'#251
|
||||
+#163'd3'#255#163'd3'#255#163'd3'#255#163'd3'#255#164'f5'#251#163'd3'#16#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#163'e4u'#201#162
|
||||
+#130#253#246#238#231#255#247#239#232#255#247#239#232#255#246#238#231#255#198
|
||||
+#158'}'#253#163'e4u'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#162'c2'#2#164'f6'#249#237#221#208#255#225#195#168#255#192#144'g'#253#192#144
|
||||
+'g'#253#220#190#161#255#221#198#179#255#164'f6'#249#162'c2'#2#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#159'`0C'#184#135'b'#252#241#229#218#255#214
|
||||
+#176#140#255#161'd4'#253#161'd4'#253#213#173#136#255#219#193#172#255#172'uK'
|
||||
+#252#159'`0D'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#159'c5'#212#217
|
||||
+#192#170#255#223#197#172#255#195#149'n'#255#159'b4'#225#159'b4'#224#192#141
|
||||
+'d'#255#211#171#137#255#192#147'o'#255#159'a3'#212#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#154'[-'#29#160'f:'#253#224#207#191#255#216#177#141#255#166'k?'
|
||||
+#252#154'[-Q'#154'[-Q'#165'i<'#252#207#156'q'#255#203#155'u'#255#155']/'#253
|
||||
+#154'[-'#29#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#153'\/'#149#190#150'w'#254#215
|
||||
+#184#157#255#203#154'r'#255#153'[-'#252#151'Y+'#6#151'Y+'#6#152'[-'#252#197
|
||||
+#139'\'#255#203#144'`'#255#173'o@'#254#153'Z,'#151#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#148'V)'#7#150'X,'#252#207#175#148#255#209#164'~'#255#191#137'^'#255#148'V)'
|
||||
+#255#148'V)'#255#148'V)'#255#148'V)'#255#186'|L'#255#201#136'V'#255#192'}J'
|
||||
+#255#149'W*'#252#148'V)'#7#0#0#0#0#0#0#0#0#145'T''Z'#166'qJ'#252#208#167#133
|
||||
+#255#208#154'n'#255#210#159'u'#255#217#173#137#255#222#185#155#255#229#199
|
||||
+#176#255#236#214#197#255#236#214#198#255#198#128'K'#255#198#127'I'#255#158'^'
|
||||
+'/'#252#145'T''Z'#0#0#0#0#0#0#0#0#146'U)'#238#188#139'e'#255#205#151'l'#255
|
||||
+#205#146'c'#255#203#142'^'#255#202#139'Y'#255#201#135'T'#255#199#131'O'#255
|
||||
+#198#128'J'#255#198#127'I'#255#198#127'I'#255#198#127'I'#255#181'q>'#255#146
|
||||
+'S'''#238#0#0#0#0#140'O#-'#145'V+'#252#202#146'f'#255#203#142']'#255#157'`2'
|
||||
+#252#140'O#'#255#140'O#'#255#140'O#'#255#140'O#'#255#140'O#'#255#140'O#'#255
|
||||
+#156'\-'#252#198#127'I'#255#197'~H'#255#145'S&'#252#140'O#-'#140'O$'#183#172
|
||||
+'nA'#255#202#138'X'#255#190'}K'#255#139'M"'#252#137'L!'#6#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#137'L!'#6#139'M"'#252#189'wC'#255#198#127'I'#255#169'g6'#255#140
|
||||
+'N#'#183#138'M"'#233#135'J '#255#135'J '#255#135'J '#255#137'L!'#131#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#138'L"'#133#135'J '#255#135'J '#255
|
||||
+#135'J '#255#138'L"'#233#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'^^^}^^^'#255'^^'
|
||||
+'^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^}'#0#0#0#0#0#0#0#0#0
|
||||
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'^^^}'#151#151#151#255#237#237#237#255#237#237
|
||||
+#237#255#237#237#237#255#237#237#237#255#237#237#237#255#237#237#237#255#237
|
||||
+#237#237#255#166#166#166#255'^^^}'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'^'
|
||||
+'^^'#255#237#237#237#255#216#216#216#255'{{{'#255'{{{'#255'{{{'#255'{{{'#255
|
||||
+'{{{'#255#164#164#164#255#230#230#230#255'^^^'#255#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0'^^^'#255#243#243#243#255'{{{'#255#246#245#245#255#246#245#245
|
||||
+#255#246#245#245#255#154#154#154#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'
|
||||
+#255'^^^'#255'^^^'#255'^^^\'#0#0#0#0'^^^'#255#240#240#240#255'{{{'#255#207
|
||||
+#159'r'#255#207#159'r'#255#127'wx'#255#186#186#186#255#240#240#240#255#240
|
||||
+#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255
|
||||
+#240#240#240#255#186#186#186#255'^^^}^^^'#255#238#238#238#255'{{{'#255#207
|
||||
+#159'r'#255#207#159'r'#255'^^^'#255#240#240#240#255#216#216#216#255'{{{'#255
|
||||
+'{{{'#255'{{{'#255'{{{'#255'{{{'#255#164#164#164#255#240#240#240#255'^^^'#255
|
||||
+'^^^'#255#237#237#237#255'{{{'#255#207#159'r'#255#207#159'r'#255'^^^'#255#240
|
||||
+#240#240#255'{{{'#255#246#245#245#255#246#245#245#255#197#192#192#255#197#192
|
||||
+#192#255#244#243#243#255'{{{'#255#240#240#240#255'^^^'#255'^^^'#255#243#243
|
||||
+#243#255#211#211#211#255'{{{'#255'{{{'#255'^^^'#255#240#240#240#255'{{{'#255
|
||||
+#207#159'r'#255#207#159'r'#255#246#245#245#255#245#245#245#255#207#159'r'#255
|
||||
+'{{{'#255#240#240#240#255'^^^'#255'^^^'#221#237#237#237#255#237#237#237#255
|
||||
+#237#237#237#255#237#237#237#255'^^^'#255#240#240#240#255'{{{'#255#207#159'r'
|
||||
+#255#207#159'r'#255#235#234#234#255#235#234#234#255#207#159'r'#255'{{{'#255
|
||||
+#240#240#240#255'^^^'#255'^^^}^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255
|
||||
+#240#240#240#255'{{{'#255#207#159'r'#255#207#159'r'#255#207#159'r'#255#207
|
||||
+#159'r'#255#207#159'r'#255'{{{'#255#240#240#240#255'^^^'#255'^^^'#255#243#243
|
||||
+#243#255#240#240#240#255#209#209#209#255#235#235#235#255'^^^'#255#240#240#240
|
||||
+#255#211#211#211#255'{{{'#255'{{{'#255'{{{'#255'{{{'#255'{{{'#255#192#192#192
|
||||
+#255#240#240#240#255'^^^'#255'^^^'#255#217#217#217#255#193#193#193#255#183
|
||||
+#183#183#255#188#188#188#255'XXX'#255#186#186#186#255#240#240#240#255#240#240
|
||||
+#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240#240#240#255#240
|
||||
+#240#240#255#186#186#186#255'^^^'#255#20#21#21#159'^^^'#255'^^^'#255'^^^'#255
|
||||
+'^^^'#255'^^^'#151'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'
|
||||
+#255'^^^'#255'^^^'#255'^^^'#151#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'^^^'
|
||||
+#255#243#243#243#255#240#240#240#255#209#209#209#255#235#235#235#255#235#235
|
||||
+#235#255#200#200#200#255#197#197#197#255#197#197#197#255#232#232#232#255'^^^'
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'^^^'#255#217#217#217#255#193#193
|
||||
+#193#255#183#183#183#255#188#188#188#255#188#188#188#255#182#182#182#255#209
|
||||
+#209#209#255#213#213#213#255#196#196#196#255'^^^'#255#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0'^^^'#151'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'#255'^^^'
|
||||
+#255'^^^'#255'^^^'#255'^^^'#255'^^^'#151#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#4't:'#232#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'
|
||||
+#255#4's:'#255#4't:'#232#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4's:'#255#174
|
||||
+#222#198#255#170#220#194#255#164#218#190#255#159#216#187#255#154#214#183#255
|
||||
+#147#211#178#255#4's:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4's:'#255#176
|
||||
+#223#199#255']'#189#140#255'T'#185#133#255'I'#181'}'#255'>'#176'v'#255#143
|
||||
+#209#175#255#4's:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
|
||||
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4's:'#255#177#223
|
||||
+#199#255'^'#190#141#255'U'#186#134#255'J'#181'~'#255'?'#177'v'#255#138#207
|
||||
+#172#255#4's:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4's:'#255#176#223
|
||||
+#199#255'^'#190#141#255'T'#185#133#255'I'#181'}'#255'>'#176'v'#255#133#205
|
||||
+#169#255#4's:'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4
|
||||
+'u;'#197#4's:'#255#4's:'#255#4's:'#255#4'v;'#247#175#222#198#255'['#188#139
|
||||
+#255'R'#184#132#255'G'#180'|'#255'5'#173'p'#255#127#203#164#255#4'v;'#247#4
|
||||
+'s:'#255#4's:'#255#4's:'#255#4'u;'#197#4's:e'''#137'V'#246#172#220#196#255
|
||||
+#178#223#200#255#176#222#199#255#172#221#196#255'X'#189#137#255'N'#187#132
|
||||
+#255'C'#184'|'#255#15#164'X'#255#127#206#165#255'~'#205#164#255'~'#204#164
|
||||
+#255'x'#199#159#255#24#130'K'#245#4's:e'#255#255#255#0#4't;'#172'M'#164'x'
|
||||
+#248#158#215#186#255'a'#192#144#255'['#193#141#255'U'#193#138#255':'#185'x'
|
||||
+#255#17#173'^'#255#11#171'Y'#255#10#170'Y'#255#12#169'X'#255'h'#199#151#255
|
||||
+'4'#154'e'#248#4't;'#171#255#255#255#0#255#255#255#0#4's:'#12#4't:'#225's'
|
||||
+#191#152#254#135#210#172#255'V'#195#140#255'0'#186't'#255#12#177']'#255#13
|
||||
+#180'_'#255#13#180'_'#255#13#179'^'#255'N'#197#137#255'U'#183#132#254#4'u;'
|
||||
,#225#4's:'#12#255#255#255#0#255#255#255#0#255#255#255#0#4's:-'#11'w>'#246#143
|
||||
+#211#176#255'['#200#145#255#13#180'_'#255#15#185'b'#255#15#188'e'#255#16#189
|
||||
+'e'#255'2'#197'{'#255'q'#206#159#255#10'x?'#246#4's:-'#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4's:e#'#138'V'#245'x'#210
|
||||
+#165#255#28#189'k'#255#17#192'g'#255#18#197'j'#255#31#201's'#255'x'#219#168
|
||||
+#255#30#137'R'#245#4's:e'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#4'u;'#172'='#163'o'#249'i'
|
||||
+#213#158#255#18#196'i'#255#20#203'n'#255'l'#224#165#255'?'#168'r'#249#4'v<'
|
||||
+#171#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||
+#255#255#255#0#255#255#255#0#255#255#255#0#4's:'#12#4'v;'#225']'#191#141#254
|
||||
+'L'#209#141#255'N'#213#144#255'_'#197#146#254#4'v<'#225#4's:'#12#255#255#255
|
||||
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#255#255#255#0#255#255#255#0#4's:-'#14'zB'#246't'#209#162#255'u'
|
||||
+#211#163#255#14'{B'#246#4's:-'#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#255#255#255#0#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4
|
||||
+'s:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'
|
||||
+#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4
|
||||
+'s:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#4's:'
|
||||
+#255#4's:'#255#4's:'#255#4's:'#255#4's:'#255#255#255#255#0#255#255#255#0#226
|
||||
+#162#137#164#208#146#127#215#212#144'x'#218#211#144'y'#218#213#146'{'#218#215
|
||||
+#148'|'#218#216#148'}'#218#219#150#127#218#219#152#128#218#220#154#129#218
|
||||
+#225#159#134#219#212#147'|'#174#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#182'zl'#245#215#155#136#255#229#160#136#255#229#162#136#255#230
|
||||
+#160#134#255#231#159#132#255#232#161#133#255#234#164#136#255#238#170#142#255
|
||||
+#240#174#147#255#244#178#151#255#206#140'v'#231#255#255#255#0#255#255#255#0
|
||||
+#255#255#255#0#255#255#255#0#178'vg'#245#210#151#132#255#222#155#130#255#221
|
||||
+#153#129#255#239#202#187#255#251#241#238#255#251#239#235#255#249#233#227#255
|
||||
+#237#182#162#255#234#165#137#255#239#172#145#255#206#139'u'#231#255#255#255#0
|
||||
+#255#255#255#0#255#255#255#0#255#255#255#0#221#182#175#250#203#142'{'#255#213
|
||||
+#139's'#255#251#244#241#255#255#255#255#255#249#245#243#255#249#234#229#255
|
||||
+#255#255#255#255#255#255#255#255#232#184#164#255#234#164#138#255#206#138't'
|
||||
+#231#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#176'te'#245#200
|
||||
+#140'z'#255#223#172#156#255#255#255#255#255#248#242#240#255#210#137'p'#255
|
||||
+#214#137'm'#255#235#194#182#255#255#255#255#255#238#216#209#255#225#155#130
|
||||
+#255#206#139'v'#226#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||
+#178'yj'#245#197#138'{'#255#204#134'o'#255#224#184#171#255#200#133'o'#255#207
|
||||
+#135'o'#255#227#183#168#255#254#251#250#255#255#255#255#255#209#154#137#255
|
||||
+#222#154#129#255#203#135'r'#226#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#178'wi'#245#192#134'v'#255#202#135's'#255#200#132'p'#255#202#132
|
||||
+'n'#255#231#199#188#255#255#255#255#255#251#248#247#255#207#152#136#255#214
|
||||
+#145'x'#255#216#150#127#255#198#132'o'#226#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#255#255#255#0#177'vh'#245#188#131's'#255#195#130'o'#255#197#131'o'
|
||||
+#255#194'zd'#255#253#251#250#255#255#255#255#255#192'{h'#255#207#139's'#255
|
||||
+#209#143'y'#255#211#145'{'#255#195#127'l'#226#255#255#255#0#255#255#255#0#255
|
||||
+#255#255#0#255#255#255#0#173'pb'#245#184'}p'#255#190'}i'#255#192'~k'#255#191
|
||||
+'zf'#255#223#188#177#255#217#181#172#255#198#127'h'#255#202#136's'#255#204
|
||||
+#138'u'#255#206#140'v'#255#191'}i'#226#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#218#178#170#250#175'vh'#255#185'xe'#255#187'yg'#255#183
|
||||
+'oZ'#255#253#250#250#255#255#255#255#255#196#133's'#255#195#130'n'#255#198
|
||||
+#132'p'#255#200#134'r'#255#189'yf'#225#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#180'wj'#245#174'uh'#255#179'sb'#255#181'tb'#255#180'p]'
|
||||
+#255#221#190#180#255#231#209#204#255#187'yf'#255#191'}i'#255#193#127'l'#255
|
||||
+#195#129'm'#255#186'vd'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||
+#255#0#175'tg'#245#173'uh'#255#176'p^'#255#178'q`'#255#180'tb'#255#179'n\'
|
||||
+#255#181'o]'#255#187'xf'#255#189'{h'#255#191'}k'#255#193#127'k'#255#184'uc'
|
||||
+#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#150'WK'#245#137
|
||||
+'F;'#255#138'D7'#255#139'D7'#255#140'E8'#255#141'F9'#255#142'G9'#255#143'H:'
|
||||
+#255#144'I;'#255#145'J<'#255#146'K='#255#154'UG'#240#255#255#255#0#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0'xFA'#245#219#220#220#255#212#220#220#255
|
||||
+#212#220#220#255#212#220#220#255#211#220#220#255#211#220#220#255#211#220#220
|
||||
+#255#211#220#220#255#211#220#220#255#214#220#220#255#176#146#139#139#255#255
|
||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#149'VJ'#251#137'F;'#255#138
|
||||
+'D7'#255#139'D7'#255#140'E8'#255#141'F9'#255#142'G9'#255#143'H:'#255#144'I;'
|
||||
+#255#145'J<'#255#146'K='#255#152'SF'#248#255#255#255#0#255#255#255#0#255#255
|
||||
,#255#0#187'j4k'#186'e0'#188#187'f1'#237#186'f0'#247#186'f0'#247#186'f0'#247
|
||||
+#186'e0'#247#186'e/'#247#185'e.'#247#185'e.'#247#185'd.'#247#185'd.'#239#183
|
||||
+'b,'#189#183'b.c'#255#255#255#0#0#0#11'TFontDialog'#7'dlgFont'#11'MinFontSiz'
|
||||
+'e'#2#0#11'MaxFontSize'#2#0#4'left'#2'z'#3'top'#3#215#0#0#0#0
|
||||
]);
|
688
src/fRbnMonitor.pas
Normal file
688
src/fRbnMonitor.pas
Normal file
@ -0,0 +1,688 @@
|
||||
unit fRbnMonitor;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
ComCtrls, ActnList, StdCtrls, Grids, lNetComponents, lNet, lclType, RegExpr;
|
||||
|
||||
const
|
||||
C_MAX_ROWS = 1000; //max lines in the list of RBN spots
|
||||
|
||||
|
||||
type
|
||||
TRbnSpot = record
|
||||
spotter : String[20];
|
||||
dxstn : String[20];
|
||||
freq : String[20];
|
||||
mode : String[10];
|
||||
qsl : String[2];
|
||||
dxinfo : String[1];
|
||||
signal : String[3];
|
||||
end;
|
||||
|
||||
type
|
||||
TOnShowSpotEvent = procedure(RbnSpot : TRbnSpot) of Object;
|
||||
|
||||
type
|
||||
TRbnThread = class(TThread)
|
||||
private
|
||||
cs : TRTLCriticalSection;
|
||||
reg : TRegExpr;
|
||||
fRbnSpot : TRbnSpot;
|
||||
FOnShowSpot : TOnShowSpotEvent;
|
||||
function AllowedSpot(spotter, dxstn, freq, mode, LoTW, eQSL : String; var dxinfo : String) : Boolean;
|
||||
|
||||
procedure ShowSpot;
|
||||
protected
|
||||
procedure Execute; override;
|
||||
public
|
||||
DxccWithLoTW : Boolean;
|
||||
fil_SrcCont : String;
|
||||
fil_IgnWkdHour : Boolean;
|
||||
fil_IgnHourValue : Integer;
|
||||
fil_IgnDate : Boolean;
|
||||
fil_IgnDateValue : String;
|
||||
fil_IgnTimeValue : String;
|
||||
fil_AllowAllCall : Boolean;
|
||||
fil_AllowOnlyCall : Boolean;
|
||||
fil_AllowOnlyCallValue : String;
|
||||
fil_AllowOnlyCallReg : Boolean;
|
||||
fil_AllowOnlyCallRegValue : String;
|
||||
fil_AllowCont : String;
|
||||
fil_AllowBands : String;
|
||||
fil_AllowModes : String;
|
||||
fil_AllowCnty : String;
|
||||
fil_NotCnty : String;
|
||||
fil_LoTWOnly : Boolean;
|
||||
fil_eQSLOnly : Boolean;
|
||||
fil_NewDXCOnly : Boolean;
|
||||
|
||||
property OnShowSpot : TOnShowSpotEvent read FOnShowSpot write FOnShowSpot;
|
||||
end;
|
||||
|
||||
|
||||
type
|
||||
TfrmRbnMonitor = class(TForm)
|
||||
acRbnMonitor: TActionList;
|
||||
acConnect: TAction;
|
||||
acDisconnect: TAction;
|
||||
acFontSettings: TAction;
|
||||
acFilter: TAction;
|
||||
acRbnServer: TAction;
|
||||
acScrollDown : TAction;
|
||||
acHelp : TAction;
|
||||
btnEatFocus : TButton;
|
||||
dlgFont: TFontDialog;
|
||||
imgRbnMonitor: TImageList;
|
||||
sbRbn: TStatusBar;
|
||||
sgRbn: TStringGrid;
|
||||
ToolBar1: TToolBar;
|
||||
tbtnConnect: TToolButton;
|
||||
ToolButton1 : TToolButton;
|
||||
ToolButton10 : TToolButton;
|
||||
ToolButton2: TToolButton;
|
||||
ToolButton3: TToolButton;
|
||||
ToolButton4: TToolButton;
|
||||
ToolButton5: TToolButton;
|
||||
ToolButton6: TToolButton;
|
||||
ToolButton7: TToolButton;
|
||||
ToolButton8 : TToolButton;
|
||||
ToolButton9 : TToolButton;
|
||||
procedure acConnectExecute(Sender: TObject);
|
||||
procedure acDisconnectExecute(Sender: TObject);
|
||||
procedure acFilterExecute(Sender: TObject);
|
||||
procedure acFontSettingsExecute(Sender: TObject);
|
||||
procedure acHelpExecute(Sender : TObject);
|
||||
procedure acRbnServerExecute(Sender: TObject);
|
||||
procedure acScrollDownExecute(Sender : TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure sgRbnDblClick(Sender: TObject);
|
||||
procedure sgRbnDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect;
|
||||
aState: TGridDrawState);
|
||||
procedure sgRbnHeaderSized(Sender: TObject; IsColumn: Boolean;
|
||||
Index: Integer);
|
||||
private
|
||||
RbnMonThread : TRbnThread;
|
||||
lTelnet : TLTelnetClientComponent;
|
||||
aRbnArchive : Array of TRbnSpot;
|
||||
|
||||
procedure lConnect(aSocket: TLSocket);
|
||||
procedure lDisconnect(aSocket: TLSocket);
|
||||
procedure lReceive(aSocket: TLSocket);
|
||||
procedure AddSpotToThread(spot : String);
|
||||
|
||||
public
|
||||
csRbnMonitor : TRTLCriticalSection;
|
||||
slRbnSpots : TStringList;
|
||||
DeleteCount : Integer;
|
||||
procedure SynRbnMonitor(RbnSpot : TRbnSpot);
|
||||
procedure LoadConfigToThread;
|
||||
end;
|
||||
|
||||
var
|
||||
frmRbnMonitor: TfrmRbnMonitor;
|
||||
|
||||
implementation
|
||||
|
||||
uses dUtils, uMyIni, dData, fRbnServer, dDXCluster, fRbnFilter, fNewQSO;
|
||||
|
||||
{ TfrmRbnMonitor }
|
||||
|
||||
procedure TRBNThread.ShowSpot;
|
||||
begin
|
||||
if Assigned(OnShowSpot) then
|
||||
begin
|
||||
FOnShowSpot(fRbnSpot)
|
||||
end;
|
||||
end;
|
||||
|
||||
function TRBNThread.AllowedSpot(spotter, dxstn, freq, mode, LoTW, eQSL : String; var dxinfo : String) : Boolean;
|
||||
var
|
||||
SrcCont : String;
|
||||
DestCont : String;
|
||||
Country : String;
|
||||
waz,itu : String;
|
||||
pfx : String;
|
||||
LastDate : String;
|
||||
LastTime : String;
|
||||
Band : String;
|
||||
adif : Word;
|
||||
index : Integer;
|
||||
f : Double;
|
||||
begin
|
||||
Result := False;
|
||||
|
||||
dmDXCluster.id_country(spotter,now,pfx,Country,waz,itu,SrcCont);
|
||||
|
||||
if (Pos(SrcCont+',',fil_SrcCont+',') = 0) and (fil_SrcCont<>'') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Wrong source continent - ',SrcCont);
|
||||
exit
|
||||
end;
|
||||
|
||||
if fil_IgnWkdHour then
|
||||
begin
|
||||
LastDate := FormatDateTime('YYY-MM-DD',now - (fil_IgnHourValue/57));
|
||||
LastTime := FormatDateTime('HH:NN',now - (fil_IgnHourValue/24))
|
||||
end
|
||||
else begin
|
||||
LastDate := fil_IgnDateValue;
|
||||
LastTime := fil_IgnTimeValue
|
||||
end;
|
||||
|
||||
Band := dmDXCluster.GetBandFromFreq(freq,True);
|
||||
if (Band='') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Wrong band - ',Band);
|
||||
exit
|
||||
end;
|
||||
|
||||
if dmData.RbnCallExistsInLog(dxstn,Band,mode,LastDate,LastTime) then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Station already exist in the log - ',dxstn);
|
||||
exit
|
||||
end;
|
||||
|
||||
if fil_AllowOnlyCall then
|
||||
begin
|
||||
if Pos(dxstn+',',fil_AllowOnlyCallValue+',') = 0 then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Station is not between allowed callsigns - ',dxstn);
|
||||
exit
|
||||
end
|
||||
end;
|
||||
|
||||
if fil_AllowOnlyCallReg then
|
||||
begin
|
||||
reg.Expression := fil_AllowOnlyCallRegValue;
|
||||
reg.InputString := dxstn;
|
||||
if not reg.Exec(1) then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Station is not between allowed callsigns - ',dxstn);
|
||||
exit
|
||||
end
|
||||
end;
|
||||
|
||||
if (Pos(band+',',fil_AllowBands+',')=0) and (fil_AllowBands<>'') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This band is NOT allowed - ',band);
|
||||
exit
|
||||
end;
|
||||
|
||||
if (Pos(mode+',',fil_AllowModes+',')=0) and (fil_AllowModes<>'') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This mode is NOT allowed - ',mode);
|
||||
exit
|
||||
end;
|
||||
|
||||
adif := dmDXCluster.id_country(dxstn,now,Pfx,Country,waz,itu,DestCont);
|
||||
|
||||
if (Pos(DestCont+',',fil_AllowCont+',') = 0) and (fil_AllowCont<>'') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Wrong continent - ',DestCont);
|
||||
exit
|
||||
end;
|
||||
|
||||
if ((fil_NotCnty<>'') and (Pos(pfx+',',fil_NotCnty+',')>0)) then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This country is not allowed - ',pfx);
|
||||
exit
|
||||
end;
|
||||
|
||||
if ((fil_AllowCnty<>'') and (Pos(pfx+',',fil_AllowCnty+',')=0)) then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This country is not allowed - ',pfx);
|
||||
exit
|
||||
end;
|
||||
|
||||
if fil_LoTWOnly and (LoTW<>'L') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This station is not LoTW user - ',dxstn);
|
||||
exit
|
||||
end;
|
||||
|
||||
if fil_eQSLOnly and (eQSL<>'E') then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','This station is not eQSL user - ',dxstn);
|
||||
exit
|
||||
end;
|
||||
|
||||
dmData.RbnMonDXCCInfo(adif,band,mode,DxccWithLoTW,index);
|
||||
case index of
|
||||
1 : dxinfo := 'N';
|
||||
2 : dxinfo := 'B';
|
||||
3 : dxinfo := 'M';
|
||||
else
|
||||
dxinfo := ''
|
||||
end; //case
|
||||
|
||||
if fil_NewDXCOnly then
|
||||
begin
|
||||
if (index>0) and (index<4) then
|
||||
begin
|
||||
Writeln('RBNMonitor: ','Not new one, band or mode - ',dxstn);
|
||||
exit
|
||||
end
|
||||
end;
|
||||
|
||||
Result := True
|
||||
end;
|
||||
|
||||
procedure TRBNThread.Execute;
|
||||
var
|
||||
spot : String;
|
||||
spotter : String;
|
||||
freq : String;
|
||||
stren : String;
|
||||
mode : String;
|
||||
dxstn : String;
|
||||
LoTW : String;
|
||||
eQSL : String;
|
||||
dxinfo : String;
|
||||
RbnSpot : TRbnSpot;
|
||||
index : Integer;
|
||||
begin
|
||||
reg := TRegExpr.Create;
|
||||
try try
|
||||
while not Terminated do
|
||||
begin
|
||||
EnterCriticalsection(frmRbnMonitor.csRbnMonitor);
|
||||
try
|
||||
if frmRbnMonitor.slRbnSpots.Count>0 then
|
||||
begin
|
||||
spot := frmRbnMonitor.slRbnSpots.Strings[0];
|
||||
frmRbnMonitor.slRbnSpots.Delete(0)
|
||||
end
|
||||
else
|
||||
spot := ''
|
||||
finally
|
||||
LeaveCriticalsection(frmRbnMonitor.csRbnMonitor)
|
||||
end;
|
||||
if (spot='') then
|
||||
begin
|
||||
sleep(200);
|
||||
Continue
|
||||
end;
|
||||
|
||||
spotter := trim(copy(spot,7,Pos('-',spot)-7));
|
||||
freq := trim(copy(spot,18,9));
|
||||
stren := trim(copy(spot,Pos('dB',spot)-4,4));
|
||||
mode := trim(copy(spot,41,6));
|
||||
|
||||
dxstn := copy(spot,Pos('.',spot)+3,Length(spot)-Pos('.',spot)-1);
|
||||
dxstn := trim(dxstn);
|
||||
dxstn := trim(copy(dxstn,1,Pos(' ',dxstn)));
|
||||
|
||||
Writeln('Spotter:',spotter);
|
||||
Writeln('Freq:',freq);
|
||||
Writeln('Stren:',stren);
|
||||
Writeln('Mode:',mode);
|
||||
Writeln('Dxstn:',dxstn);
|
||||
|
||||
|
||||
Writeln('Before UsesLoTW');
|
||||
if dmDXCluster.UsesLotw(dxstn) then
|
||||
LoTW := 'L'
|
||||
else
|
||||
LoTW := '';
|
||||
|
||||
Writeln('Before UseseQSL');
|
||||
if dmDXCluster.UseseQSL(dxstn) then
|
||||
eQSL := 'E'
|
||||
else
|
||||
eQSL := '';
|
||||
|
||||
if AllowedSpot(spotter,dxstn,freq,mode,LoTW,eQSL,dxinfo) then
|
||||
begin
|
||||
fRbnSpot.spotter := spotter;
|
||||
fRbnSpot.dxstn := dxstn;
|
||||
fRbnSpot.freq := freq;
|
||||
fRbnSpot.mode := mode;
|
||||
fRbnSpot.qsl := LoTW+eQSL;
|
||||
fRbnSpot.dxinfo := dxinfo;
|
||||
fRbnSpot.signal := stren;
|
||||
Synchronize(@ShowSpot)
|
||||
end;
|
||||
Sleep(100)
|
||||
end
|
||||
except
|
||||
on E: Exception do
|
||||
Writeln('*********',E.Message)
|
||||
end
|
||||
finally
|
||||
FreeAndNil(reg)
|
||||
end
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
procedure TfrmRbnMonitor.AddSpotToThread(spot : String);
|
||||
begin
|
||||
EnterCriticalsection(csRbnMonitor);
|
||||
try
|
||||
slRbnSpots.Add(spot)
|
||||
finally
|
||||
LeaveCriticalsection(csRbnMonitor)
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.lConnect(aSocket: TLSocket);
|
||||
begin
|
||||
tbtnConnect.Action := acDisconnect;
|
||||
sbRbn.Panels[0].Text := 'Connected to RBN'
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.lDisconnect(aSocket: TLSocket);
|
||||
begin
|
||||
tbtnConnect.Action := acConnect;
|
||||
sbRbn.Panels[0].Text := 'Disconected'
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.lReceive(aSocket: TLSocket);
|
||||
const
|
||||
CR = #13;
|
||||
LF = #10;
|
||||
var
|
||||
sStart, sStop: Integer;
|
||||
tmp : String;
|
||||
buffer : String;
|
||||
UserName : String;
|
||||
begin
|
||||
if lTelnet.GetMessage(buffer) = 0 then
|
||||
exit;
|
||||
sStart := 1;
|
||||
sStop := Pos(CR, Buffer);
|
||||
if sStop = 0 then
|
||||
sStop := Length(Buffer) + 1;
|
||||
while sStart <= Length(Buffer) do
|
||||
begin
|
||||
tmp := Copy(Buffer, sStart, sStop - sStart);
|
||||
tmp := trim(tmp);
|
||||
if dmData.DebugLevel >=1 then Writeln(tmp);
|
||||
|
||||
if (Pos('DX DE',UpperCase(tmp))>0) then
|
||||
begin
|
||||
writeln(tmp);
|
||||
AddSpotToThread(tmp)
|
||||
end
|
||||
else begin
|
||||
UserName := cqrini.ReadString('RBNMonitor','UserName',cqrini.ReadString('Station', 'Call', ''));
|
||||
if (Pos('LOGIN',UpperCase(tmp)) > 0) and (UserName <> '') then
|
||||
lTelnet.SendMessage(UserName+#13+#10);
|
||||
if (Pos('please enter your call',LowerCase(tmp)) > 0) and (UserName <> '') then
|
||||
lTelnet.SendMessage(UserName+#13+#10)
|
||||
end;
|
||||
|
||||
sStart := sStop + 1;
|
||||
if sStart > Length(Buffer) then
|
||||
Break;
|
||||
if Buffer[sStart] = LF then
|
||||
sStart := sStart + 1;
|
||||
sStop := sStart;
|
||||
while (Buffer[sStop] <> CR) and (sStop <= Length(Buffer)) do
|
||||
sStop := sStop + 1
|
||||
end;
|
||||
lTelnet.CallAction
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acConnectExecute(Sender: TObject);
|
||||
var
|
||||
port : Integer;
|
||||
server : String;
|
||||
user : String;
|
||||
begin
|
||||
RbnMonThread := TRBNThread.Create(True);
|
||||
RbnMonThread.FreeOnTerminate := True;
|
||||
RbnMonThread.OnShowSpot := @SynRbnMonitor;
|
||||
RbnMonThread.Start;
|
||||
|
||||
LoadConfigToThread;
|
||||
|
||||
server := cqrini.ReadString('RBNMonitor','ServerName','telnet.reversebeacon.net:7000');
|
||||
user := cqrini.ReadString('RBNMonitor','UserName',cqrini.ReadString('Station', 'Call', ''));
|
||||
|
||||
if (user='') then
|
||||
begin
|
||||
Application.MessageBox('User name is not defined!','Warning...',mb_ok+mb_IconWarning);
|
||||
acRbnServer.Execute;
|
||||
exit
|
||||
end;
|
||||
|
||||
lTelnet.Host := Copy(server,1,Pos(':',server)-1);
|
||||
if not TryStrToInt(Copy(server,Pos(':',server)+1,6),port) then
|
||||
port := 7000;
|
||||
lTelnet.Port := port;
|
||||
Writeln(server,' ',port);
|
||||
lTelnet.Connect;
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acDisconnectExecute(Sender: TObject);
|
||||
begin
|
||||
lTelnet.Disconnect();
|
||||
RbnMonThread.Terminate;
|
||||
tbtnConnect.Action := acConnect
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acFilterExecute(Sender: TObject);
|
||||
begin
|
||||
with TfrmRbnFilter.Create(frmRbnMonitor) do
|
||||
try
|
||||
if ShowModal = mrOK then
|
||||
LoadConfigToThread
|
||||
finally
|
||||
Free
|
||||
end;
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acFontSettingsExecute(Sender: TObject);
|
||||
begin
|
||||
dlgFont.Font := sgRbn.Font;
|
||||
if dlgFont.Execute then
|
||||
begin
|
||||
cqrini.WriteString('RBNMonitor','Font',dlgFont.Font.Name);
|
||||
cqrini.WriteInteger('RBNMonitor','FontSize',dlgFont.Font.Size);
|
||||
sgRbn.Font := dlgFont.Font
|
||||
end;
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acHelpExecute(Sender : TObject);
|
||||
begin
|
||||
ShowMessage('Not implemented, yet')
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acRbnServerExecute(Sender: TObject);
|
||||
begin
|
||||
with TfrmRbnServer.Create(frmRbnMonitor) do
|
||||
try
|
||||
edtServerName.Text := cqrini.ReadString('RBNMonitor','ServerName','telnet.reversebeacon.net:7000');
|
||||
edtUserName.Text := cqrini.ReadString('RBNMonitor','UserName',cqrini.ReadString('Station', 'Call', ''));
|
||||
if ShowModal = mrOK then
|
||||
begin
|
||||
cqrini.WriteString('RBNMonitor','ServerName',edtServerName.Text);
|
||||
cqrini.WriteString('RBNMonitor','UserName',edtUserName.Text)
|
||||
end
|
||||
finally
|
||||
Free
|
||||
end;
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.acScrollDownExecute(Sender : TObject);
|
||||
begin
|
||||
sgRbn.Row := sgRbn.RowCount;
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
var
|
||||
i : Integer;
|
||||
begin
|
||||
for i:=0 to sgRbn.ColCount-1 do
|
||||
cqrini.WriteInteger('WindowSize','RbnCol'+IntToStr(i),sgRbn.ColWidths[i]);
|
||||
|
||||
dmUtils.SaveWindowPos(self)
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.FormCreate(Sender: TObject);
|
||||
begin
|
||||
InitCriticalSection(csRbnMonitor);
|
||||
|
||||
DeleteCount := 0;
|
||||
|
||||
sgRbn.RowCount := 1;
|
||||
|
||||
slRbnSpots := TStringList.Create;
|
||||
|
||||
lTelnet := TLTelnetClientComponent.Create(nil);
|
||||
lTelnet.OnConnect := @lConnect;
|
||||
lTelnet.OnDisconnect := @lDisconnect;
|
||||
lTelnet.OnReceive := @lReceive
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
FreeAndNil(lTelnet);
|
||||
DoneCriticalsection(csRbnMonitor);
|
||||
FreeAndNil(slRbnSpots)
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.FormShow(Sender: TObject);
|
||||
var
|
||||
i : Integer;
|
||||
begin
|
||||
for i:=0 to sgRbn.ColCount-1 do
|
||||
sgRbn.ColWidths[i] := cqrini.ReadInteger('WindowSize','RbnCol'+IntToStr(i),70);
|
||||
|
||||
dmUtils.LoadWindowPos(self);
|
||||
|
||||
sgRbn.Options := sgRbn.Options + [goColSizing] - [goRowSelect, goRangeSelect];
|
||||
sgRbn.Font.Name := cqrini.ReadString('RBNMonitor','Font','DejaVu Sans Mono');
|
||||
sgRbn.Font.Size := cqrini.ReadInteger('RBNMonitor','FontSize',10);
|
||||
|
||||
sgRbn.Cells[0,0] := 'Source';
|
||||
sgRbn.Cells[1,0] := 'Freq';
|
||||
sgRbn.Cells[2,0] := 'DX';
|
||||
sgRbn.Cells[3,0] := 'Mode';
|
||||
sgRbn.Cells[4,0] := 'dB';
|
||||
sgRbn.Cells[5,0] := 'Q';
|
||||
sgRbn.Cells[6,0] := 'D'
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.sgRbnDblClick(Sender: TObject);
|
||||
begin
|
||||
frmNewQSO.NewQSOFromSpot(sgRbn.Cells[2,sgRbn.Row],sgRbn.Cells[1,sgRbn.Row],sgRbn.Cells[3,sgRbn.Row],True)
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.sgRbnDrawCell(Sender: TObject; aCol, aRow: Integer;
|
||||
aRect: TRect; aState: TGridDrawState);
|
||||
begin
|
||||
{
|
||||
if (aRow>0) then
|
||||
begin
|
||||
if (Arow mod 2 > 0) then
|
||||
sgRbn.Canvas.Brush.Color:= clwhite
|
||||
else
|
||||
sgRbn.Canvas.Brush.Color:= $00E7FFEB;
|
||||
sgRbn.Canvas.FillRect(aRect);
|
||||
sgRbn.Canvas.TextOut(aRect.Left, aRect.top + 4, sgRbn.Cells[ACol, ARow])
|
||||
end }
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.sgRbnHeaderSized(Sender: TObject; IsColumn: Boolean;
|
||||
Index: Integer);
|
||||
begin
|
||||
btnEatFocus.SetFocus
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.LoadConfigToThread;
|
||||
begin
|
||||
if Assigned(RbnMonThread) then
|
||||
begin
|
||||
RbnMonThread.fil_SrcCont := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT);
|
||||
|
||||
RbnMonThread.fil_IgnWkdHour := cqrini.ReadBool('RBNFilter','IgnHour',True);
|
||||
RbnMonThread.fil_IgnHourValue := cqrini.ReadInteger('RBNFilter','IgnHourValue',48);
|
||||
RbnMonThread.fil_IgnDate := cqrini.ReadBool('RBNFilter','IgnDate',False);
|
||||
RbnMonThread.fil_IgnDateValue := cqrini.ReadString('RBNFilter','IgnDateValue','');
|
||||
RbnMonThread.fil_IgnTimeValue := cqrini.ReadString('RBNFilter','IgnTimeValue','');
|
||||
|
||||
RbnMonThread.fil_AllowAllCall := cqrini.ReadBool('RBNFilter','AllowAllCall',True);
|
||||
RbnMonThread.fil_AllowOnlyCall := cqrini.ReadBool('RBNFilter','AllowOnlyCall',False);
|
||||
RbnMonThread.fil_AllowOnlyCallValue := cqrini.ReadString('RBNFilter','AllowOnlyCallValue','');
|
||||
RbnMonThread.fil_AllowOnlyCallReg := cqrini.ReadBool('RBNFilter','AllowOnlyCallReg',False);
|
||||
RbnMonThread.fil_AllowOnlyCallRegValue := cqrini.ReadString('RBNFilter','AllowOnlyCallRegValue','');
|
||||
|
||||
RbnMonThread.fil_AllowCont := cqrini.ReadString('RBNFilter','AllowCont',C_RBN_CONT);
|
||||
RbnMonThread.fil_AllowBands := cqrini.ReadString('RBNFilter','AllowBands',C_RBN_BANDS);
|
||||
RbnMonThread.fil_AllowModes := cqrini.ReadString('RBNFilter','AllowModes',C_RBN_MODES);
|
||||
RbnMonThread.fil_AllowCnty := cqrini.ReadString('RBNFilter','AllowCnty','');
|
||||
RbnMonThread.fil_NotCnty := cqrini.ReadString('RBNFilter','NotCnty','');
|
||||
|
||||
RbnMonThread.fil_LoTWOnly := cqrini.ReadBool('RBNFilter','LoTWOnly',False);
|
||||
RbnMonThread.fil_eQSLOnly := cqrini.ReadBool('RBNFilter','eQSLOnly',False);
|
||||
|
||||
RbnMonThread.fil_NewDXCOnly := cqrini.ReadBool('RBNFilter','NewDXCOnly',False)
|
||||
end
|
||||
end;
|
||||
|
||||
procedure TfrmRbnMonitor.SynRbnMonitor(RbnSpot : TRbnSpot);
|
||||
var
|
||||
i : Integer;
|
||||
|
||||
procedure AddRow;
|
||||
begin
|
||||
i := sgRbn.RowCount+1;
|
||||
sgRbn.RowCount := i;
|
||||
dec(i);
|
||||
|
||||
sgRbn.Cells[0,i] := RbnSpot.spotter;
|
||||
sgRbn.Cells[1,i] := RbnSpot.freq;
|
||||
sgRbn.Cells[2,i] := RbnSpot.dxstn;
|
||||
sgRbn.Cells[3,i] := RbnSpot.mode;
|
||||
sgRbn.Cells[4,i] := RbnSpot.signal;
|
||||
sgRbn.Cells[5,i] := RbnSpot.qsl;
|
||||
sgRbn.Cells[6,i] := RbnSpot.dxinfo
|
||||
end;
|
||||
|
||||
begin
|
||||
if sgRbn.Focused then
|
||||
begin
|
||||
inc(DeleteCount);
|
||||
AddRow
|
||||
end
|
||||
else begin
|
||||
AddRow;
|
||||
if DeleteCount>0 then
|
||||
begin
|
||||
if (sgRbn.RowCount > C_MAX_ROWS) then
|
||||
begin
|
||||
for i:=1 to DeleteCount do
|
||||
sgRbn.DeleteRow(0)
|
||||
end;
|
||||
DeleteCount := 0
|
||||
end
|
||||
else begin
|
||||
if sgRbn.RowCount>C_MAX_ROWS then
|
||||
sgRbn.DeleteRow(0)
|
||||
end;
|
||||
|
||||
sgRbn.Row := sgRbn.RowCount
|
||||
end
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I fRbnMonitor.lrs}
|
||||
|
||||
end.
|
||||
|
63
src/fRbnServer.lfm
Normal file
63
src/fRbnServer.lfm
Normal file
@ -0,0 +1,63 @@
|
||||
object frmRbnServer: TfrmRbnServer
|
||||
Left = 435
|
||||
Height = 132
|
||||
Top = 330
|
||||
Width = 428
|
||||
ActiveControl = edtServerName
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Change RBN server address'
|
||||
ClientHeight = 132
|
||||
ClientWidth = 428
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.2.4.0'
|
||||
object Label1: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 9
|
||||
Width = 77
|
||||
Caption = 'Server:port'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtServerName: TEdit
|
||||
Left = 8
|
||||
Height = 27
|
||||
Top = 32
|
||||
Width = 328
|
||||
TabOrder = 0
|
||||
Text = 'edtServerName'
|
||||
end
|
||||
object Button1: TButton
|
||||
Left = 346
|
||||
Height = 25
|
||||
Top = 5
|
||||
Width = 75
|
||||
Caption = 'OK'
|
||||
OnClick = Button1Click
|
||||
TabOrder = 2
|
||||
end
|
||||
object Button2: TButton
|
||||
Left = 346
|
||||
Height = 25
|
||||
Top = 34
|
||||
Width = 75
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
TabOrder = 3
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 8
|
||||
Height = 17
|
||||
Top = 70
|
||||
Width = 75
|
||||
Caption = 'User name:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edtUserName: TEdit
|
||||
Left = 8
|
||||
Height = 27
|
||||
Top = 95
|
||||
Width = 179
|
||||
TabOrder = 1
|
||||
Text = 'edtUserName'
|
||||
end
|
||||
end
|
19
src/fRbnServer.lrs
Normal file
19
src/fRbnServer.lrs
Normal file
@ -0,0 +1,19 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TfrmRbnServer','FORMDATA',[
|
||||
'TPF0'#13'TfrmRbnServer'#12'frmRbnServer'#4'Left'#3#179#1#6'Height'#3#132#0#3
|
||||
+'Top'#3'J'#1#5'Width'#3#172#1#13'ActiveControl'#7#13'edtServerName'#11'Borde'
|
||||
+'rStyle'#7#8'bsDialog'#7'Caption'#6#25'Change RBN server address'#12'ClientH'
|
||||
+'eight'#3#132#0#11'ClientWidth'#3#172#1#8'Position'#7#17'poOwnerFormCenter'
|
||||
+#10'LCLVersion'#6#7'1.2.4.0'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#17
|
||||
+#3'Top'#2#9#5'Width'#2'M'#7'Caption'#6#11'Server:port'#11'ParentColor'#8#0#0
|
||||
+#5'TEdit'#13'edtServerName'#4'Left'#2#8#6'Height'#2#27#3'Top'#2' '#5'Width'#3
|
||||
+'H'#1#8'TabOrder'#2#0#4'Text'#6#13'edtServerName'#0#0#7'TButton'#7'Button1'#4
|
||||
+'Left'#3'Z'#1#6'Height'#2#25#3'Top'#2#5#5'Width'#2'K'#7'Caption'#6#2'OK'#7'O'
|
||||
+'nClick'#7#12'Button1Click'#8'TabOrder'#2#2#0#0#7'TButton'#7'Button2'#4'Left'
|
||||
+#3'Z'#1#6'Height'#2#25#3'Top'#2'"'#5'Width'#2'K'#6'Cancel'#9#7'Caption'#6#6
|
||||
+'Cancel'#8'TabOrder'#2#3#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#17#3
|
||||
+'Top'#2'F'#5'Width'#2'K'#7'Caption'#6#10'User name:'#11'ParentColor'#8#0#0#5
|
||||
+'TEdit'#11'edtUserName'#4'Left'#2#8#6'Height'#2#27#3'Top'#2'_'#5'Width'#3#179
|
||||
+#0#8'TabOrder'#2#1#4'Text'#6#11'edtUserName'#0#0#0
|
||||
]);
|
58
src/fRbnServer.pas
Normal file
58
src/fRbnServer.pas
Normal file
@ -0,0 +1,58 @@
|
||||
unit fRbnServer;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, lclType;
|
||||
|
||||
type
|
||||
|
||||
{ TfrmRbnServer }
|
||||
|
||||
TfrmRbnServer = class(TForm)
|
||||
Button1: TButton;
|
||||
Button2: TButton;
|
||||
edtUserName: TEdit;
|
||||
edtServerName: TEdit;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
procedure Button1Click(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
frmRbnServer: TfrmRbnServer;
|
||||
|
||||
implementation
|
||||
|
||||
{ TfrmRbnServer }
|
||||
|
||||
procedure TfrmRbnServer.Button1Click(Sender: TObject);
|
||||
begin
|
||||
if (edtServerName.Text='') then
|
||||
begin
|
||||
Application.MessageBox('Enter address to RBN server, please','Warning...', mb_ok+mb_IconWarning);
|
||||
edtServerName.SetFocus;
|
||||
exit
|
||||
end;
|
||||
|
||||
if (Pos(':',edtServerName.Text)=0) then
|
||||
begin
|
||||
Application.MessageBox('Address does not have PORT specified. The correct value is servername:port','Warning...', mb_ok+mb_IconWarning);
|
||||
edtServerName.SetFocus;
|
||||
exit
|
||||
end;
|
||||
ModalResult := mrOK
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I fRbnServer.lrs}
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user