Fixes to LoTW/eQSL mark upload, Group edit, Filter

LoTW/eQSL:
	"Mark all qsos uploaded" did set ALL qsos uploaded with current date.
	Issue #352 Fixed to affect only qsos that have empty/NULL upload infos
Filter:
	Added selections for Propagation mode and Satellite. Issue #351
	Adding them needed some layout changes so lfm contains lot of changes.
Group edit:
	Fixed bug in eQSL part.
	Added Propagation mode, Satellite and lotw send date field selections.
	Reordering of field selection list.
	Layout changes, more informative look.

	Help files fixed

Squashed commit of the following:

commit e32d5e0286c6e28b0632551a532498ff7cbed700
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Nov 24 20:29:34 2020 +0200

    Fixes to LoTW/eQSL mark upload, Group edit, Filter

commit 0099f6d591f9512325f5f82b3fb172f5875758f5
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Nov 24 20:27:55 2020 +0200

    Fixes to LoTW/eQSL mark upload, Group edit, Filter

commit 61f24a6d8c1731fc47bd5777c7d5886e7127b515
Author: OH1KH <oh1kh@sral.fi>
Date:   Tue Nov 24 20:14:47 2020 +0200

    Fixes to LoTW/eQSL mark upload, Group edit, Filter

    LoTW/eQSL:
    	"Mark all qsos uploaded" did set ALL qsos uploaded with current date.
    	Issue #352 Fixed to affect only qsos that have empty/NULL upload infos
    Filter:
    	Added selections for Propagation mode and Satellite. Issue #351
    	Adding them needed some layout changes so lfm contains lot of changes.
    Group edit:
    	Fixed bug in eQSL part.
    	Added Propagation mode, Satellite and lotw send date field selections.
    	Reordering of field selection list.
    	Layout changes, more informative look.

    	Help files fixed

     Please enter the commit message for your changes. Lines starting
This commit is contained in:
OH1KH 2020-11-24 20:31:05 +02:00
parent 106f4b0257
commit bedb727291
14 changed files with 578 additions and 382 deletions

View File

@ -72,22 +72,22 @@
</tbody>
</table>
<p><img src=img/h90.png></p>
<div align="justify">A record can be tagged by clicking the corresponding icon or
with the mouse - hold the Ctrl key on the keyboard and left click on the QSO record
to be tagged.<br>
Or you can set up filter and pick qsos that need editing.
</div>
<p><img src=img/h90.png></p>
<div align="justify">Click the <em>Edit QSO</em> button and the group edit menu
You can also set up filter (<strong>Filter/Create</strong> or <strong>F12</strong>) and pick qsos that need editing.
<br><strong>Note: </strong>If you do not do either one Group edit will affect to your <strong>whole log</strong> and there is <strong>no undone!</strong>. You have been warned.
</div><br>
<div align="justify">Click the <strong>Edit QSO</strong> button or select <strong>File/Group edit</strong> and the group edit form
appears:<br></div>
<p><img src=img/h91.png></p>
<div align="justify">Choose the field to be edited from the pulldown menu:<br></div>
<p><img src=img/h92.png></p>
<div align="justify">The field name changes. Enter the value (word, string) which
will appear in <strong>ALL</strong> tagged QSO records. Click the <em>Apply</em>
button and the value in all tagged records will be changed to the value entered
into <em>Value:</em> box. All values entered within a session are temporarily stored
so you can list it with the "down arrow" button in the group edit menu.
<p><img src=img/h91.png> <img src=img/h90b.png><br>
<img src=img/h92.png> <img src=img/h92b.png><br>
<img src=img/h92c.png></p>
<div align="justify">Choose the field to be edited from the pulldown menu:The field name changes. Enter the value (word, string) which will appear in <strong>ALL</strong> tagged QSO records.
<br>Click the <em>Apply</em> button and the value in all tagged records will be changed to the value entered
into <em>Value:</em> box. When edit is done you can select another field or close Group edit using button <em>Cancel</em>.
</div>
<table border="0" cellpadding="5" cellspacing="2" width="100%">
<tbody>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 77 KiB

BIN
help/img/h90b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
help/img/h92b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
help/img/h92c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -3535,7 +3535,7 @@ end;
procedure TdmData.MarkAllAsUploadedToeQSL;
const
C_UPD = 'update cqrlog_main set eqsl_qsl_sent = %s,eqsl_qslsdate=%s';
C_UPD = 'update cqrlog_main set eqsl_qsl_sent = %s,eqsl_qslsdate=%s where (eqsl_qsl_sent="" and eqsl_qslsdate is NULL)';
begin
Q1.Close;
if trQ1.Active then
@ -3554,7 +3554,7 @@ begin
end;
procedure TdmData.MarkAllAsUploadedToLoTW;
const
C_UPD = 'update cqrlog_main set lotw_qsls = %s, lotw_qslsdate = %s';
C_UPD = 'update cqrlog_main set lotw_qsls = %s, lotw_qslsdate = %s where (lotw_qsls="" and lotw_qslsdate is NULL)';
begin
Q1.Close;
if trQ1.Active then

File diff suppressed because it is too large Load Diff

View File

@ -40,6 +40,8 @@ type
cmbeQSL_qslr : TComboBox;
cmbeQSL_qsls : TComboBox;
cmbMode: TComboBox;
cmbPropMode: TComboBox;
cmbSatName: TComboBox;
cmbQSL_S: TComboBox;
cmbQSL_R: TComboBox;
cmbProfile: TComboBox;
@ -75,6 +77,8 @@ type
edtITU: TEdit;
gbCallsign: TGroupBox;
gbIota: TGroupBox;
gbPropMode: TGroupBox;
gbSatName: TGroupBox;
gbRemarks: TGroupBox;
gbAward: TGroupBox;
gbMyLoc: TGroupBox;
@ -110,8 +114,8 @@ type
lblSentL: TLabel;
lblSortBy: TLabel;
lblEqsl : TLabel;
Label18 : TLabel;
Label19 : TLabel;
lblPwrTo : TLabel;
lblPwrFrom : TLabel;
Label2: TLabel;
Label20: TLabel;
Label3: TLabel;
@ -122,6 +126,8 @@ type
Label9: TLabel;
dlgOpen: TOpenDialog;
rbExactlyDarcDok: TRadioButton;
rbExactlyPropMode: TRadioButton;
rbExactlySatName: TRadioButton;
rbIncludeDarcDok: TRadioButton;
rbExactlyCounty: TRadioButton;
rbExactlyMyLoc: TRadioButton;
@ -134,6 +140,8 @@ type
rbExactlyCall: TRadioButton;
rbIncludeCounty: TRadioButton;
rbIncludeMyLoc: TRadioButton;
rbIncludePropMode: TRadioButton;
rbIncludeSatName: TRadioButton;
rbIncludeRem: TRadioButton;
rbIncludeLoc: TRadioButton;
rbIncludeQth: TRadioButton;
@ -147,6 +155,9 @@ type
procedure btnSelectDXCCClick(Sender: TObject);
procedure chkRememberChange(Sender: TObject);
procedure cmbBandSelectorChange(Sender: TObject);
procedure cmbContestNameExit(Sender: TObject);
procedure cmbPropModeExit(Sender: TObject);
procedure cmbSatNameExit(Sender: TObject);
procedure edtCallSignChange(Sender: TObject);
procedure edtLocatorChange(Sender: TObject);
procedure edtMyLocChange(Sender: TObject);
@ -162,7 +173,6 @@ type
tmp : String;
end;
const
C_CONTEST_LIST_FILE_NAME = 'ContestName.tab';
C_FILTER_LAST_SETTINGS_FILE_NAME = 'FilterSettings.fil';
var
frmFilter: TfrmFilter;
@ -171,7 +181,7 @@ implementation
{$R *.lfm}
{ TfrmFilter }
uses dData, dUtils,fSelectDXCC, dMembership, uMyini;
uses dData, dUtils,fSelectDXCC, dMembership, uMyini,dSatellite;
procedure TfrmFilter.btnOKClick(Sender: TObject);
var
@ -368,6 +378,20 @@ begin
if ((edtPwrFrom.Text <> '') and (edtPwrTo.Text <> '')) then tmp := tmp + ' (pwr >= ' + edtPwrFrom.Text + ') AND '+
' (pwr <= ' + edtPwrTo.Text + ') AND';
if (cmbPropMode.Text <> '') then
begin
if rbExactlyPropMode.Checked then
tmp := tmp + ' (prop_mode = ' + QuotedStr(cmbPropMode.Text)+') AND'
else
tmp := tmp + ' (prop_mode LIKE ''%' + cmbPropMode.Text + '%'') AND';
end;
if (cmbSatName.Text <> '') then
begin
if rbExactlySatName.Checked then
tmp := tmp + ' (satellite = ' + QuotedStr(cmbSatName.Text)+') AND'
else
tmp := tmp + ' (satellite LIKE ''%' + cmbSatName.Text + '%'') AND';
end;
if cmbMembers.ItemIndex >0 then tmp := tmp + ' (club_nr'+IntToStr(cmbMembers.ItemIndex)+' <> '+
QuotedStr('')+') AND';
@ -438,50 +462,29 @@ procedure TfrmFilter.btnCancelClick(Sender: TObject);
begin
Close
end;
procedure TfrmFilter.FormCreate(Sender: TObject);
var
ListOfContests : TStringList;
i : integer;
s: string;
Contestfile :TextFile;
begin
dmUtils.InsertModes(cmbMode);
cmbMode.Items.Insert(0,''); //to be sure there is empty line at start
dmUtils.InsertBands(cmbBandSelector);
cmbBandSelector.Items.Insert(0, ''); //to be sure
// loading the contest list from ../ContestNames.tab
// Format of File CONTEST_ID|CONTEST_DESCRIPTION
// see ADIF 3.0.9 http://www.adif.org/309/ADIF_309.htm#Contest_ID
ListOfContests:= TStringList.Create;
ListOfContests.Clear;
ListOfContests.Sorted:=false;
if FileExists(dmData.HomeDir + C_CONTEST_LIST_FILE_NAME) then
Begin
AssignFile(Contestfile, dmData.HomeDir + C_CONTEST_LIST_FILE_NAME);
try
reset(Contestfile);
while not eof(Contestfile) do
begin
readln(Contestfile, s);
ListOfContests.Add(ExtractDelimited(1,s,['|']));
end;
CloseFile(Contestfile);
except
on E: EInOutError do
writeln('Contestfile reading error. Details: ', E.Message);
end;
end;
//Add strings that wsjt-x may use at contest_name column
ListOfContests.Add('NA VHF');
ListOfContests.Add('EU VHF');
ListOfContests.Add('FIELD DAY');
ListOfContests.Add('RTTY RU');
ListOfContests.Add('FOX-QSO');
ListOfContests.Add('HOUND-QSO');
ListOfContests.Sort;
cmbContestName.Clear;
cmbContestName.Items := ListOfContests;
cmbContestName.Items.Insert(0,''); //to be sure there is empty line at start
ListOfContests.Free;
cmbBandSelector.Items.Insert(0, '');
dmUtils.InsertContests(cmbContestName);
cmbContestName.Items.Insert(0,'');
cmbContestName.Items.Add('NA VHF'); //Add strings that wsjt-x may use at contest_name column
cmbContestName.Items.Add('EU VHF');
cmbContestName.Items.Add('FIELD DAY');
cmbContestName.Items.Add('RTTY RU');
cmbContestName.Items.Add('FOX-QSO');
cmbContestName.Items.Add('HOUND-QSO');
TStringList(cmbContestName.Items).Sort;
dmSatellite.SetListOfPropModes(cmbPropMode);
cmbPropMode.Items.Insert(0, '');
dmSatellite.SetListOfSatellites(cmbSatName);
cmbSatName.Items.Insert(0, '');
dmData.InsertProfiles(cmbProfile,True);
cmbProfile.Text := dmData.GetDefaultProfileText;
cmbProfile.Items.Insert(0,'Any profile');
cmbProfile.ItemIndex := 0;
end;
//actually form create and show are common procedure as filter is opened in showModal and it always
//creates and shows itself in every opening
@ -495,13 +498,7 @@ begin
cmbQSL_S.Items.Add('Empty');
dmUtils.InsertQSL_R(cmbQSL_R);
cmbQSL_R.Items.Add('Empty');
dmUtils.InsertModes(cmbMode);
cmbMode.Items.Insert(0,'');
dmData.InsertProfiles(cmbProfile,True);
cmbProfile.Text := dmData.GetDefaultProfileText;
cmbProfile.Items.Insert(0,'Any profile');
cmbProfile.ItemIndex := 0;
cmbMembers.Items.Add('');
if dmMembership.Club1.Name <> '' then
cmbMembers.Items.Add('1;'+dmMembership.Club1.Name+';'+dmMembership.Club1.LongName);
@ -576,6 +573,21 @@ begin
end;
procedure TfrmFilter.cmbContestNameExit(Sender: TObject);
begin
cmbContestName.Text:=ExtractWord(1,cmbContestName.Text,['|'])
end;
procedure TfrmFilter.cmbPropModeExit(Sender: TObject);
begin
cmbPropMode.Text:=ExtractWord(1,cmbPropMode.Text,['|']);
end;
procedure TfrmFilter.cmbSatNameExit(Sender: TObject);
begin
cmbSatName.Text:=ExtractWord(1,cmbSatName.Text,['|']);
end;
procedure TfrmFilter.edtCallSignChange(Sender: TObject);
var i: integer;
s: string;

View File

@ -1,13 +1,13 @@
object frmGroupEdit: TfrmGroupEdit
Left = 454
Height = 146
Height = 150
Top = 357
Width = 436
ActiveControl = btnApply
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Group edit'
ClientHeight = 146
ClientHeight = 150
ClientWidth = 436
Icon.Data = {
BE1000000000010001002020000001002000A810000016000000280000002000
@ -148,56 +148,41 @@ object frmGroupEdit: TfrmGroupEdit
}
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.0.4.0'
LCLVersion = '2.0.8.0'
object GroupBox1: TGroupBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
Left = 0
Height = 108
Height = 112
Top = 0
Width = 436
Align = alClient
ClientHeight = 106
ClientHeight = 110
ClientWidth = 434
TabOrder = 0
object Label1: TLabel
object lblField: TLabel
AnchorSideLeft.Control = GroupBox1
AnchorSideTop.Control = cmbField
AnchorSideTop.Side = asrCenter
Left = 12
Height = 17
Top = 9
Width = 35
Height = 15
Top = 10
Width = 34
BorderSpacing.Left = 12
Caption = 'Field:'
ParentColor = False
OnClick = lblFieldClick
end
object Label2: TLabel
AnchorSideLeft.Control = Label1
object lblValue: TLabel
AnchorSideLeft.Control = lblField
AnchorSideTop.Control = cmbValue
AnchorSideTop.Side = asrCenter
Left = 12
Height = 17
Height = 15
Top = 44
Width = 40
Caption = 'Value:'
ParentColor = False
end
object lblInfo: TLabel
AnchorSideLeft.Control = GroupBox1
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = GroupBox1
AnchorSideBottom.Side = asrBottom
Left = 197
Height = 17
Top = 83
Width = 41
Anchors = [akLeft, akBottom]
BorderSpacing.Top = 6
BorderSpacing.Bottom = 6
Caption = 'lblInfo'
Caption = 'Value:'
ParentColor = False
end
object cmbField: TComboBox
@ -221,29 +206,33 @@ object frmGroupEdit: TfrmGroupEdit
'RSt received'
'Name'
'QTH'
'QSL sent'
'QSL received'
'QSL via'
'Power'
'ITU'
'WAZ'
'County'
'State'
'LoTW QSL sent'
'LoTW QSL received'
'Award'
'IOTA'
'Comment to QSO'
'My locator'
'Locator'
'QTH Profile'
'QSL via'
'QSL sent'
'QSL sent date'
'QSL received'
'QSL rcvd date'
'LoTW QSL sent'
'LoTW QSL sent date'
'LoTW QSL received'
'LoTW QSL received date'
'eQSL sent'
'eQSL sent date'
'eQSL rcvd'
'eQSL rcvd date'
'Contest name'
'Propagation mode'
'Satellite name'
)
OnChange = cmbFieldChange
Style = csDropDownList
@ -254,7 +243,7 @@ object frmGroupEdit: TfrmGroupEdit
AnchorSideTop.Control = cmbField
AnchorSideTop.Side = asrBottom
Left = 96
Height = 34
Height = 33
Top = 35
Width = 312
BorderSpacing.Top = 3
@ -262,6 +251,38 @@ object frmGroupEdit: TfrmGroupEdit
OnChange = cmbValueChange
TabOrder = 1
end
object pnlGrpEdt: TPanel
AnchorSideLeft.Control = GroupBox1
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = cmbValue
AnchorSideTop.Side = asrBottom
Left = 6
Height = 32
Top = 72
Width = 422
BorderSpacing.Top = 4
BorderWidth = 1
BorderStyle = bsSingle
ClientHeight = 30
ClientWidth = 420
TabOrder = 2
object lblInfo: TLabel
AnchorSideLeft.Control = pnlGrpEdt
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = pnlGrpEdt
AnchorSideTop.Side = asrCenter
AnchorSideBottom.Control = GroupBox1
AnchorSideBottom.Side = asrBottom
Left = 210
Height = 1
Top = 15
Width = 1
BorderSpacing.Top = 6
BorderSpacing.Bottom = 12
Layout = tlCenter
ParentColor = False
end
end
end
object Panel1: TPanel
AnchorSideLeft.Control = Owner
@ -269,7 +290,7 @@ object frmGroupEdit: TfrmGroupEdit
AnchorSideBottom.Control = Owner
Left = 0
Height = 38
Top = 108
Top = 112
Width = 436
Align = alBottom
BevelOuter = bvNone

View File

@ -29,14 +29,16 @@ type
cmbField: TComboBox;
cmbValue: TComboBox;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
lblField: TLabel;
lblValue: TLabel;
lblInfo: TLabel;
Panel1: TPanel;
pnlGrpEdt: TPanel;
procedure btnApplyClick(Sender: TObject);
procedure cmbFieldChange(Sender: TObject);
procedure cmbValueChange(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure lblFieldClick(Sender: TObject);
private
{ private declarations }
public
@ -51,7 +53,7 @@ implementation
{$R *.lfm}
{ TfrmGroupEdit }
uses dUtils, dData, dDXCC, fMain;
uses dUtils, dData, dDXCC, fMain,dSatellite;
procedure TfrmGroupEdit.cmbFieldChange(Sender: TObject);
begin
@ -62,51 +64,63 @@ begin
dmUtils.InsertModes(cmbValue);
cmbValue.Style:=csDropDownList;
end;
10 : begin
22 : begin
dmUtils.InsertQSL_S(cmbValue);
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
11 : begin
24 : begin
dmUtils.InsertQSL_R(cmbValue);
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
18,28 : begin
26,30 : begin
cmbValue.Items.Add('Y');
cmbValue.Items.Add('N');
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
19 : begin
28 : begin
cmbValue.Items.Add('L');
cmbValue.Items.Add('N');
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
25 : begin
20 : begin
dmData.InsertProfiles(cmbValue,False);
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
30 : begin
32 : begin
cmbValue.Items.Add('E');
cmbValue.Items.Add('N');
cmbValue.ItemIndex := 0;
cmbValue.Style:=csDropDownList;
end;
32 : begin
34 : begin
dmUtils.InsertContests(cmbValue);
cmbValue.Style:=csDropDown;
end;
35 : begin
dmSatellite.SetListOfPropModes(cmbValue);
cmbValue.Style:=csDropDown;
end;
36 : begin
dmSatellite.SetListOfSatellites(cmbValue);
cmbValue.Style:=csDropDown;
end;
end;
pnlGrpEdt.Color:=clRed;
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
pnlGrpEdt.Repaint;
lblInfo.Repaint;
end;
procedure TfrmGroupEdit.cmbValueChange(Sender: TObject);
begin
pnlGrpEdt.Color:=clRed;
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
pnlGrpEdt.Repaint;
lblInfo.Repaint;
if (cmbField.ItemIndex=23) or (cmbField.ItemIndex=24) then
@ -116,18 +130,26 @@ begin
end;
end;
{eQSL sent 28
eQSL sent date 29
eQSL rcvd 30
eQSL rcvd date 31
}
procedure TfrmGroupEdit.FormShow(Sender: TObject);
begin
dmUtils.LoadFontSettings(self);
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
pnlGrpEdt.Color:=clDefault;
if Selected then
lblInfo.Caption := 'Apply will afftect to selected qso(s)'
else
if dmData.IsFilter then
lblInfo.Caption := 'Apply will afftect to filtered qso(s)'
else
lblInfo.Caption := 'Apply will afftect to whole log';
pnlGrpEdt.Repaint;
lblInfo.Repaint;
end;
procedure TfrmGroupEdit.lblFieldClick(Sender: TObject);
begin
end;
procedure TfrmGroupEdit.btnApplyClick(Sender: TObject);
var
sql : String = '';
@ -173,7 +195,9 @@ var
inc(nr);
pnlGrpEdt.Color:=clYellow;
lblInfo.Caption := 'Working .... QSO nr. ' + IntToStr(nr);
pnlGrpEdt.Repaint;
lblInfo.Repaint
end;
@ -264,37 +288,10 @@ begin
sql := 'qth='+QuotedStr(cmbValue.Text)
end;
10 : begin
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_S field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_s='+QuotedStr(cmbValue.Text)
end;
11 : begin
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_R field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_r='+QuotedStr(cmbValue.Text)
end;
12 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear QSL via field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_via='+QuotedStr(UpperCase(cmbValue.Text))
end;
13 : begin
if (cmbValue.Text<>'') then
sql := 'pwr='+QuotedStr(UpperCase(cmbValue.Text))
end;
14 : begin
11 : begin
if not (TryStrToInt(cmbValue.Text,zone) and (zone > 0) and (zone < 76)) then
begin
Application.MessageBox('Please enter correct ITU zone!','Error ...', mb_OK+mb_IconError);
@ -303,7 +300,7 @@ begin
end;
sql := 'itu='+cmbValue.Text
end;
15 : begin
12 : begin
if not (TryStrToInt(cmbValue.Text,zone) and (zone > 0) and (zone < 41)) then
begin
Application.MessageBox('Please enter correct WAZ zone!','Error ...', mb_OK+mb_IconError);
@ -312,7 +309,7 @@ begin
end;
sql := 'waz='+cmbValue.Text
end;
16 : begin
13 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear County field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
@ -321,7 +318,7 @@ begin
end;
sql := 'county='+QuotedStr(cmbValue.Text)
end;
17 : begin
14 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear State field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
@ -330,21 +327,8 @@ begin
end;
sql := 'state='+QuotedStr(UpperCase(cmbValue.Text))
end;
18 : begin
if cmbValue.Text = 'Y' then
sql := 'lotw_qsls='+QuotedStr(cmbValue.Text)+',lotw_qslsdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'lotw_qsls='+QuotedStr('')+',lotw_qslsdate=null'
end;
19 : begin
if cmbValue.Text = 'Y' then
sql := 'lotw_qslr='+QuotedStr(cmbValue.Text)+',lotw_qslrdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'lotw_qslr='+QuotedStr('')+',lotw_qslrdate=null';
end;
20 : begin
15 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Award field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
@ -353,7 +337,7 @@ begin
end;
sql := 'award='+QuotedStr(cmbValue.Text)
end;
21 : begin
16 : begin
if not ((cmbValue.Text <> '') and dmUtils.IsIOTAOK(cmbValue.Text)) then
begin
Application.MessageBox('Please enter correct IOTA!','Error ...', mb_OK+mb_IconError);
@ -362,7 +346,7 @@ begin
end;
sql := 'iota='+QuotedStr(UpperCase(cmbValue.Text))
end;
22 : begin
17 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Comment to QSO field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
@ -370,28 +354,28 @@ begin
exit
end;
sql := 'remarks='+QuotedStr(cmbValue.Text)
end;
23 : begin
end;
18 : begin
if (cmbValue.Text <> '') then
begin
if not dmUtils.IsLocOK(cmbValue.Text) then
begin
Application.MessageBox('Please enter correct locator!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
begin
if not dmUtils.IsLocOK(cmbValue.Text) then
begin
Application.MessageBox('Please enter correct locator!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
end
end
end
else begin
else begin
if (Application.MessageBox('Dou you really want to clear My locator field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end
end;
sql := 'my_loc='+QuotedStr(cmbValue.Text)
end;
sql := 'my_loc='+QuotedStr(cmbValue.Text)
end;
24 : begin
19 : begin
if (cmbValue.Text <> '') then
begin
if not dmUtils.IsLocOK(cmbValue.Text) then
@ -411,11 +395,29 @@ begin
end;
sql := 'loc='+QuotedStr(cmbValue.Text)
end;
25 : begin
20 : begin
sql := 'profile=' + IntToStr(dmData.GetNRFromProfile(cmbValue.Text))
end;
26 : begin
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
21 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear QSL via field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_via='+QuotedStr(UpperCase(cmbValue.Text))
end;
22 : begin
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_S field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_s='+QuotedStr(cmbValue.Text)
end;
23 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
@ -426,8 +428,17 @@ begin
else
sql := 'qsls_date='+QuotedStr(cmbValue.Text)
end;
27 : begin
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
24 : begin
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_R field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
begin
cmbValue.SetFocus;
exit
end;
sql := 'qsl_r='+QuotedStr(cmbValue.Text)
end;
25 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
@ -438,58 +449,98 @@ begin
else
sql := 'qslr_date='+QuotedStr(cmbValue.Text)
end;
26 : begin
if cmbValue.Text = 'Y' then
sql := 'lotw_qsls='+QuotedStr(cmbValue.Text)+',lotw_qslsdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'lotw_qsls="",lotw_qslsdate=null'
end;
27 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
end
else
sql := 'lotw_qsls='+QuotedStr('Y')+',lotw_qslsdate='+
QuotedStr(cmbValue.Text)
end;
28 : begin
if cmbValue.Text = 'Y' then
sql := 'lotw_qslr='+QuotedStr(cmbValue.Text)+',lotw_qslrdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'lotw_qslr="",lotw_qslrdate=null';
end;
29 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
end
else
sql := 'lotw_qslr='+QuotedStr('E')+',lotw_qslrdate='+
QuotedStr(cmbValue.Text)
end;
30 : begin
if cmbValue.Text = 'Y' then
sql := 'eqsl_qsl_sent='+QuotedStr(cmbValue.Text)+',eqsl_qslsdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'eqsl_qsl_sent=null,eqsl_qslsdate=null';
sql := 'eqsl_qsl_sent="",eqsl_qslsdate=null';
end;
29 : begin
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
31 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
end;
if cmbValue.Text = '' then
sql := 'eqsl_qsl_sent=null,eqsl_qslsdate=null'
end
else
sql := 'eqsl_qsl_sent='+QuotedStr('Y')+',eqsl_qslsdate='+
QuotedStr(cmbValue.Text)
end;
30 : begin
32 : begin
if cmbValue.Text = 'E' then
sql := 'eqsl_qsl_rcvd='+QuotedStr(cmbValue.Text)+',eqsl_qslrdate='+
QuotedStr(dmUtils.MyDateToStr(now))
else
sql := 'eqsl_qsl_rcvd=null,eqsl_qslrdate=null'
sql := 'eqsl_qsl_rcvd="",eqsl_qslrdate=null'
end;
31 : begin
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
33 : begin
if (not dmUtils.IsDateOK(cmbValue.Text))then
begin
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
cmbValue.SetFocus;
exit
end;
if cmbValue.Text = '' then
sql := 'eqsl_qsl_rcvd=null,eqsl_qslrdate=null'
end
else
sql := 'eqsl_qsl_rcvd='+QuotedStr('E')+',eqsl_qslrdate='+
QuotedStr(cmbValue.Text)
end;
32 : begin
34 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Contest name field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
exit;
sql := 'contestname='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
end;
35 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Propagation mode field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
exit;
sql := 'prop_mode='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
end;
36 : begin
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Satellite field?',
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
exit;
sql := 'satellite='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
end;
{eQSL sent 28
eQSL sent date 29
eQSL rcvd 30
eQSL rcvd date 31
}
end;
if sql = '' then exit;
try
@ -519,6 +570,8 @@ begin
frmMain.acRefresh.Execute
end;
lblInfo.Caption := 'Edit done! (Press Cancel to exit)';
pnlGrpEdt.Color:= clLime;
pnlGrpEdt.Repaint;
lblInfo.Repaint;
end;

View File

@ -9,7 +9,7 @@ const
cMINOR = 4;
cRELEAS = 0;
cBUILD = 1;
cBUILD_DATE = '2020-11-18';
cBUILD_DATE = '2020-11-24';
implementation