mirror of
https://github.com/ok2cqr/cqrlog.git
synced 2024-09-21 10:27:17 +00:00
Addition for grayline to show LongPath
- Grayline map can now show great circle short- and Long path for qso. User can select Short Path or long Path or both together. - Plotting steps can be fixed via Preferences/Program. How ever default values seems to work for most of cases. But as there are 10^N different plotting cases user can now play with steps. - Help files are fixed Squashed commit of the following: commit bd7ff20bec3ab90075dbe8932b37a6995dbf6e4a Author: OH1KH <oh1kh@sral.fi> Date: Mon Feb 21 18:22:07 2022 +0200 fixed prefernces help commit 98793175b21fef6842796f68c39f556e82dbc7c2 Author: OH1KH <oh1kh@sral.fi> Date: Mon Feb 21 18:11:14 2022 +0200 Fixed preferences commit 04ef090f26a94a1fd3c482f04ecaefb905f1c024 Author: OH1KH <oh1kh@sral.fi> Date: Mon Feb 21 18:03:26 2022 +0200 adjustable plot stepping commit 65503ee718dec80cf75228b82d64ab0d50c157eb Author: OH1KH <oh1kh@sral.fi> Date: Sun Feb 20 14:06:04 2022 +0200 fixed help commit c3ada778b769d5d6b7e5d81ddbbdc25a9b456622 Author: OH1KH <oh1kh@sral.fi> Date: Sat Feb 19 15:32:18 2022 +0200 small fixes commit bf7c2dbf42f24a24102f723e5e2cb4219a07add3 Author: OH1KH <oh1kh@sral.fi> Date: Sat Feb 19 15:21:15 2022 +0200 Works now. TODO check code clean, fix help, test commit be33d8fc81c7f2cfaae04ec1ad2dab3ce91822ff Author: OH1KH <oh1kh@sral.fi> Date: Sat Feb 19 12:33:28 2022 +0200 SP or LP plotting works and can be selected. TODO show both SP&LP together commit dcd59150546daed974390f205980bc075c62adff Author: OH1KH <oh1kh@sral.fi> Date: Sat Feb 19 09:38:52 2022 +0200 Now can plot also LongPath
This commit is contained in:
parent
0e9dcdf767
commit
76c414e2f0
@ -101,6 +101,9 @@
|
|||||||
<strong>Grayline offset</strong> - sometimes the gray line position is not accurate.
|
<strong>Grayline offset</strong> - sometimes the gray line position is not accurate.
|
||||||
You can set your own correction.
|
You can set your own correction.
|
||||||
<br><br>
|
<br><br>
|
||||||
|
<strong>Great circle </strong> Short and Long path line plotting may be adjusted here. Plotting step is decimal degrees > 0.0 and < 40.0. In polar areas where distance/degree is smaller this value is divided by integer divisor value > 0 and < 40.
|
||||||
|
<br>You may test different values if you like. If Columns are left empty the default values 1.5 and 10 are replaced.
|
||||||
|
<br><br>
|
||||||
<strong>Check for newer version of DXCC tables after program startup</strong></a> - if checked,
|
<strong>Check for newer version of DXCC tables after program startup</strong></a> - if checked,
|
||||||
CQRLOG will check if any update of the country files is available. If a new version is found,
|
CQRLOG will check if any update of the country files is available. If a new version is found,
|
||||||
an update will be performed, however you are asked first if you want this update.<br><br>
|
an update will be performed, however you are asked first if you want this update.<br><br>
|
||||||
|
@ -37,17 +37,16 @@
|
|||||||
<li> <b>Connect to RBN</b> If autoconnect is not seleceted, see: <a href="h1.html#ch6">RBN support</a>, the connect and disconnect to RBN can be done here.</li>
|
<li> <b>Connect to RBN</b> If autoconnect is not seleceted, see: <a href="h1.html#ch6">RBN support</a>, the connect and disconnect to RBN can be done here.</li>
|
||||||
<li> <b>Link to RBNMonitor</b> This is alternative to RBN connection and will use same connection as RBN monitor window has (if connected).</li>
|
<li> <b>Link to RBNMonitor</b> This is alternative to RBN connection and will use same connection as RBN monitor window has (if connected).</li>
|
||||||
<li> <b>Show statusbar</b> Shows connection or linking state</li>
|
<li> <b>Show statusbar</b> Shows connection or linking state</li>
|
||||||
<li> <b>Show GreatCirclePath</b> By default Grayline map will show straight line from your station (from your locator defined) to station you enter to NewQSO/callsign.
|
<li> <b>Show ShortPath</b> By default Grayline map will show straight line from your station (from your locator defined) to station you enter to NewQSO/callsign.
|
||||||
With this selection you can switch the straight line to plotted great circle path. </li>
|
With this selection you can switch the straight line to plotted great circle short path. </li>
|
||||||
|
<li> <b>Show LongPath</b> As another option you can select great circle longpath. This can be selected with, or without short path.
|
||||||
<li> <b>Clear all spots</b> Clears all RBN spots from map.
|
<li> <b>Clear all spots</b> Clears all RBN spots from map.
|
||||||
<br><b> Note:</b> Dots also depend on the band, if you change band, dots will always be deleted. All data is band related.</li>
|
<br><b> Note:</b> Dots also depend on the band, if you change band, dots will always be deleted. All data is band related.</li>
|
||||||
<li> <b>Watch for</b> Opens an edit window where you can change callsign or prefix watched without opening preferences. see: <a href="h1.html#ch6">RBN support</a></li>
|
<li> <b>Watch for</b> Opens an edit window where you can change callsign or prefix watched without opening preferences. see: <a href="h1.html#ch6">RBN support</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<img src="img/h1114b.png"><br><br>
|
|
||||||
<img src="img/h1114c.png"><br><br>
|
|
||||||
<img src="img/h1114d.png"><br><br>
|
<img src="img/h1114d.png"><br><br>
|
||||||
|
<img src="img/h1114b.png"><br><br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 453 KiB |
Binary file not shown.
Before Width: | Height: | Size: 210 KiB |
BIN
help/img/h5.png
BIN
help/img/h5.png
Binary file not shown.
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 115 KiB |
@ -196,9 +196,13 @@ object frmGrayline: TfrmGrayline
|
|||||||
object pumShowStatusbar: TMenuItem
|
object pumShowStatusbar: TMenuItem
|
||||||
Action = acShowStatusBar
|
Action = acShowStatusBar
|
||||||
end
|
end
|
||||||
object pumShowGreatCircle: TMenuItem
|
object pumShowShortPath: TMenuItem
|
||||||
Caption = 'Show GreatCirclePath'
|
Caption = 'Show ShortPath'
|
||||||
OnClick = pumShowGreatCircleClick
|
OnClick = pumShowShortPathClick
|
||||||
|
end
|
||||||
|
object pumShowLongPath: TMenuItem
|
||||||
|
Caption = 'Show LongPath'
|
||||||
|
OnClick = pumShowLongPathClick
|
||||||
end
|
end
|
||||||
object pumMnuLine2: TMenuItem
|
object pumMnuLine2: TMenuItem
|
||||||
Caption = '-'
|
Caption = '-'
|
||||||
|
@ -32,7 +32,8 @@ type
|
|||||||
acConnect : TAction;
|
acConnect : TAction;
|
||||||
acShowStatusBar : TAction;
|
acShowStatusBar : TAction;
|
||||||
acLinkToRbnMonitor: TAction;
|
acLinkToRbnMonitor: TAction;
|
||||||
pumShowGreatCircle: TMenuItem;
|
pumShowLongPath: TMenuItem;
|
||||||
|
pumShowShortPath: TMenuItem;
|
||||||
pumMnuLine2: TMenuItem;
|
pumMnuLine2: TMenuItem;
|
||||||
pumClearAllSpots: TMenuItem;
|
pumClearAllSpots: TMenuItem;
|
||||||
pumWatchFor: TMenuItem;
|
pumWatchFor: TMenuItem;
|
||||||
@ -59,7 +60,8 @@ type
|
|||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure popGrayLinePopup(Sender: TObject);
|
procedure popGrayLinePopup(Sender: TObject);
|
||||||
procedure pumClearAllSpotsClick(Sender: TObject);
|
procedure pumClearAllSpotsClick(Sender: TObject);
|
||||||
procedure pumShowGreatCircleClick(Sender: TObject);
|
procedure pumShowLongPathClick(Sender: TObject);
|
||||||
|
procedure pumShowShortPathClick(Sender: TObject);
|
||||||
procedure pumWatchForClick(Sender: TObject);
|
procedure pumWatchForClick(Sender: TObject);
|
||||||
procedure sbtnGrayLineClick(Sender : TObject);
|
procedure sbtnGrayLineClick(Sender : TObject);
|
||||||
procedure tmrAutoConnectTimer(Sender : TObject);
|
procedure tmrAutoConnectTimer(Sender : TObject);
|
||||||
@ -78,7 +80,7 @@ type
|
|||||||
procedure lReceive(aSocket: TLSocket);
|
procedure lReceive(aSocket: TLSocket);
|
||||||
|
|
||||||
function ConnectToRBN : Boolean;
|
function ConnectToRBN : Boolean;
|
||||||
|
procedure CalculateBearing(lat0, long0, lat1, long1: extended; var bearing: extended);
|
||||||
public
|
public
|
||||||
RBNSpotList : array[1..MAX_ITEMS] of TRBNList;
|
RBNSpotList : array[1..MAX_ITEMS] of TRBNList;
|
||||||
band : String;
|
band : String;
|
||||||
@ -87,7 +89,7 @@ type
|
|||||||
pfx : String;
|
pfx : String;
|
||||||
rbn_status : String;
|
rbn_status : String;
|
||||||
procedure kresli;
|
procedure kresli;
|
||||||
procedure PlotGreatCircleArcLine(longitude1,latitude1,longitude2,latitude2:extended);
|
procedure PlotGreatCircleArcLine(longitude1,latitude1,longitude2,latitude2:extended; LongP:boolean);
|
||||||
procedure SavePosition;
|
procedure SavePosition;
|
||||||
procedure SynRBN;
|
procedure SynRBN;
|
||||||
function GetEmptyPos : Word;
|
function GetEmptyPos : Word;
|
||||||
@ -306,7 +308,8 @@ procedure TfrmGrayline.FormShow(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
dmUtils.LoadWindowPos(frmGrayline);
|
dmUtils.LoadWindowPos(frmGrayline);
|
||||||
sbGrayLine.Visible := cqrini.ReadBool('Grayline','Statusbar',True);
|
sbGrayLine.Visible := cqrini.ReadBool('Grayline','Statusbar',True);
|
||||||
pumShowGreatCircle.Checked:= cqrini.ReadBool('Grayline','GreatCircle',False);
|
pumShowShortPath.Checked := cqrini.ReadBool('Grayline','ShortPath',False);
|
||||||
|
pumShowLongPath.Checked := cqrini.ReadBool('Grayline','LongPath',False);
|
||||||
acShowStatusBar.Checked := sbGrayLine.Visible;
|
acShowStatusBar.Checked := sbGrayLine.Visible;
|
||||||
rbn_status :='Disconnected';
|
rbn_status :='Disconnected';
|
||||||
sbGrayLine.SimpleText := rbn_status;
|
sbGrayLine.SimpleText := rbn_status;
|
||||||
@ -390,10 +393,16 @@ begin
|
|||||||
tmrSpotDots.Enabled:=true;
|
tmrSpotDots.Enabled:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmGrayline.pumShowGreatCircleClick(Sender: TObject);
|
procedure TfrmGrayline.pumShowLongPathClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
pumShowGreatCircle.Checked:= not pumShowGreatCircle.Checked;
|
pumShowLongPath.Checked:= not pumShowLongPath.Checked;
|
||||||
cqrini.WriteBool('Grayline','GreatCircle',pumShowGreatCircle.Checked);
|
cqrini.WriteBool('Grayline','LongPath',pumShowLongPath.Checked);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmGrayline.pumShowShortPathClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
pumShowShortPath.Checked:= not pumShowShortPath.Checked;
|
||||||
|
cqrini.WriteBool('Grayline','ShortPath',pumShowShortPath.Checked);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmGrayline.pumWatchForClick(Sender: TObject);
|
procedure TfrmGrayline.pumWatchForClick(Sender: TObject);
|
||||||
@ -497,70 +506,73 @@ begin
|
|||||||
s := '';
|
s := '';
|
||||||
d := '';
|
d := '';
|
||||||
dmUtils.CoordinateFromLocator(dmUtils.CompleteLoc(my_loc),lat,long);
|
dmUtils.CoordinateFromLocator(dmUtils.CompleteLoc(my_loc),lat,long);
|
||||||
if pumShowGreatCircle.Checked then
|
if pumShowShortPath.Checked or pumShowLongPath.Checked then
|
||||||
PlotGreatCircleArcLine(long,lat,long1,lat1)
|
Begin
|
||||||
|
if pumShowShortPath.Checked then
|
||||||
|
PlotGreatCircleArcLine(long,lat,long1,lat1,false);
|
||||||
|
if pumShowLongPath.Checked then
|
||||||
|
PlotGreatCircleArcLine(long,lat,long1,lat1,true);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
ob^.jachcucaru(true,long,lat*-1,long1,lat1*-1);
|
ob^.jachcucaru(true,long,lat*-1,long1,lat1*-1);
|
||||||
Refresh
|
Refresh
|
||||||
end;
|
end;
|
||||||
procedure TfrmGrayline.PlotGreatCircleArcLine(longitude1,latitude1,longitude2,latitude2:extended);
|
|
||||||
{ Ref: http://www.movable-type.co.uk/scripts/latlong.html }
|
|
||||||
|
|
||||||
Const
|
procedure TfrmGrayline.CalculateBearing(lat0, long0, lat1, long1: extended; var bearing: extended);
|
||||||
Basestep = 0.0174532925; //1 degree in radians
|
|
||||||
PolarStep = 0.00174532925; // base/10
|
|
||||||
var
|
|
||||||
lat1,lat2,lon1,lon2,
|
|
||||||
latFrom,lonFrom,
|
|
||||||
step,
|
|
||||||
dist,
|
|
||||||
bearing : extended;
|
|
||||||
CountLimit : integer;
|
|
||||||
BearingIsPositive : boolean;
|
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
|
||||||
procedure LatLongToDistance(const lat0, long0, lat1, long1: extended;
|
|
||||||
var dist, bearing: extended);
|
|
||||||
var
|
var
|
||||||
R: double = 6371000; // earth radius in meters
|
x, y: extended;
|
||||||
dlat, dlong, slat, slong, a, c, x, y: double;
|
|
||||||
begin
|
begin
|
||||||
// dist
|
|
||||||
dlat := lat1 - lat0;
|
|
||||||
dlong := long1 - long0;
|
|
||||||
slat := Sin(0.5 * dlat);
|
|
||||||
slong := Sin(0.5 * dlong);
|
|
||||||
a := slat * slat + Cos(lat0) * Cos(lat1) * slong * slong;
|
|
||||||
c := 2.0 * ArcTan2(Sqrt(a), Sqrt(1.0-a));
|
|
||||||
dist := R * c;
|
|
||||||
// bearing
|
// bearing
|
||||||
y := Sin(long1 - long0) * Cos(lat1);
|
y := Sin(long1 - long0) * Cos(lat1);
|
||||||
x := Cos(lat0) * Sin(lat1) - Sin(lat0) * Cos(lat1) * Cos(long1 - long0);
|
x := Cos(lat0) * Sin(lat1) - Sin(lat0) * Cos(lat1) * Cos(long1 - long0);
|
||||||
bearing := ArcTan2(y, x);
|
bearing := ArcTan2(y, x);
|
||||||
end;
|
end;
|
||||||
//-------------------------------------------------------------------
|
|
||||||
|
procedure TfrmGrayline.PlotGreatCircleArcLine(longitude1,latitude1,longitude2,latitude2:extended; LongP:boolean);
|
||||||
|
{ Ref: http://www.movable-type.co.uk/scripts/latlong.html }
|
||||||
|
|
||||||
|
Const
|
||||||
|
MEC = 170 *pi/180; // Map image horizontal Edge Crossing "no print" limit in degrees (converted to radians)
|
||||||
|
|
||||||
|
var
|
||||||
|
lat1,lat2,lon1,lon2,
|
||||||
|
latFrom,lonFrom,
|
||||||
|
BaseStep,step, // degree steps (converted to radians) for path line
|
||||||
|
PolarStep, // steps in polar regions where distances/degrees are smaller
|
||||||
|
bearing, oldbearing : extended;
|
||||||
|
CountLimit,
|
||||||
|
LP : integer; //LongPath instead of ShortPath
|
||||||
|
|
||||||
Begin
|
Begin
|
||||||
|
BaseStep := cqrini.ReadFloat('Program', 'GraylineGCstep',15E-001) * pi/180;
|
||||||
|
PolarStep := Basestep/cqrini.ReadInteger('Program', 'GraylineGCstep',10);
|
||||||
|
|
||||||
ob^.GC_line_clear;
|
|
||||||
if LocalDbg then
|
if LocalDbg then
|
||||||
begin
|
begin
|
||||||
writeln ('-------------------------------------------------------------------');
|
writeln ('-------------------------------------------------------------------');
|
||||||
writeln ('Start:',round(latitude1),' ',round(longitude1),' ',round(latitude2),' ',round(longitude2));
|
writeln ('Start:',round(latitude1),' ',round(longitude1),' ',round(latitude2),' ',round(longitude2));
|
||||||
end;
|
end;
|
||||||
step := BaseStep;
|
|
||||||
dist :=0;
|
|
||||||
bearing :=0;
|
|
||||||
|
|
||||||
|
step := BaseStep;
|
||||||
|
|
||||||
|
if LongP then
|
||||||
|
LP:=1
|
||||||
|
else
|
||||||
|
LP:=0;
|
||||||
|
ob^.GC_line_clear(LP);
|
||||||
longitude1 := degToRad(longitude1);
|
longitude1 := degToRad(longitude1);
|
||||||
latitude1 := degToRad(latitude1);
|
latitude1 := degToRad(latitude1);
|
||||||
longitude2 := degToRad(longitude2);
|
longitude2 := degToRad(longitude2);
|
||||||
latitude2 := degToRad(latitude2);
|
latitude2 := degToRad(latitude2);
|
||||||
|
|
||||||
LatLongToDistance(latitude1, longitude1, latitude2, longitude2, dist, bearing);
|
CalculateBearing(latitude1, longitude1, latitude2, longitude2, bearing);
|
||||||
BearingIsPositive := (bearing > 0);
|
bearing:=bearing+LP*pi;
|
||||||
|
oldbearing:=bearing;
|
||||||
CountLimit:=ob^.GC_Points_Max;
|
CountLimit:=ob^.GC_Points_Max;
|
||||||
|
|
||||||
|
if LocalDbg then
|
||||||
|
writeln ('Bearing:',round(radTodeg(bearing)));
|
||||||
while (CountLimit > 0) do
|
while (CountLimit > 0) do
|
||||||
Begin
|
Begin
|
||||||
latFrom:=latitude1;
|
latFrom:=latitude1;
|
||||||
@ -572,14 +584,40 @@ while (CountLimit > 0) do
|
|||||||
else
|
else
|
||||||
step:=BaseStep;
|
step:=BaseStep;
|
||||||
|
|
||||||
LatLongToDistance(latFrom, lonFrom, latitude2, longitude2, dist, bearing);
|
if LocalDbg then
|
||||||
if ((bearing > 0) <> BearingIsPositive) then CountLimit:=0;;
|
writeln (LineEnding,'FROM (',Round(RadToDeg(latFrom)),' ',Round(RadToDeg(lonFrom)),')',' To: ',Round(RadToDeg(latitude2)),' ',Round(RadToDeg(longitude2)));
|
||||||
|
|
||||||
|
CalculateBearing(latFrom, lonFrom, latitude2, longitude2,bearing);
|
||||||
|
bearing:=bearing+LP*pi; //makes LongPath if LP=1 counting plot points in "wrong direction"
|
||||||
|
|
||||||
|
if abs(oldbearing -bearing) > (pi/2) then
|
||||||
|
Begin
|
||||||
|
if LocalDbg then
|
||||||
|
Begin
|
||||||
|
writeln('Obe:',round(radtodeg(oldbearing)));
|
||||||
|
writeln('Nbe:',round(radtodeg(bearing)));
|
||||||
|
end;
|
||||||
|
if LP = 1 then
|
||||||
|
begin
|
||||||
|
if LocalDbg then
|
||||||
|
writeln ('Release LP value in count round ',CountLimit);
|
||||||
|
LP:=0; //we are on globe's opposite side of target. Release LP and now on calculate rest via ShortPath
|
||||||
|
CalculateBearing(latFrom, lonFrom, latitude2, longitude2, bearing);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if LocalDbg then
|
||||||
|
writeln ('Stop counting in round ',CountLimit);
|
||||||
|
CountLimit:=0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
if LocalDbg then
|
if LocalDbg then
|
||||||
writeln ('Dist:',round(dist * 0.001) ,' Bearing:',round(radTodeg(bearing)));
|
writeln ('Bearing:',round(radTodeg(bearing)));
|
||||||
|
|
||||||
longitude1 := longitude1 + (sin(bearing) * step) / cos(latitude1);
|
longitude1 := longitude1 + (sin(bearing) * step) / cos(latitude1);
|
||||||
latitude1 := latitude1 + (cos(bearing) * step);
|
latitude1 := latitude1 + (cos(bearing) * step);
|
||||||
|
|
||||||
|
//swap on horizontal or veritcal edges
|
||||||
if longitude1 < -Pi then longitude1 := 2*Pi+longitude1;
|
if longitude1 < -Pi then longitude1 := 2*Pi+longitude1;
|
||||||
if longitude1 > Pi then longitude1 := -2*Pi+longitude1;
|
if longitude1 > Pi then longitude1 := -2*Pi+longitude1;
|
||||||
|
|
||||||
@ -587,13 +625,20 @@ while (CountLimit > 0) do
|
|||||||
if latitude1 < -Pi/2 then latitude1:= -Pi/2 - (latitude1+Pi/2);
|
if latitude1 < -Pi/2 then latitude1:= -Pi/2 - (latitude1+Pi/2);
|
||||||
|
|
||||||
if LocalDbg then
|
if LocalDbg then
|
||||||
writeln ('To: ',Round(RadToDeg(latitude1)),' ',Round(RadToDeg(longitude1)),' (',Round(RadToDeg(latFrom)),' ',Round(RadToDeg(lonFrom)),')');
|
writeln ('From (',Round(RadToDeg(latFrom)),' ',Round(RadToDeg(lonFrom)),')',' To: ',Round(RadToDeg(latitude1)),' ',Round(RadToDeg(longitude1)));
|
||||||
|
|
||||||
// 170 degrees = 2,96705972839 rad
|
//map image horizontal edge crossing check. Allow plot if we are not in edge of image.
|
||||||
if not (((lonFrom > 2.96705972839) and (longitude1 < -2.96705972839)) //right crossing
|
if not (((lonFrom > MEC) and (longitude1 < -MEC)) //right crossing
|
||||||
or ((lonFrom < -2.96705972839) and (longitude1 > 2.96705972839)) //left crossing
|
or ((lonFrom < -MEC) and (longitude1 > MEC)) //left crossing
|
||||||
) then
|
) then
|
||||||
ob^.GC_line_part(RadToDeg(lonFrom),RadToDeg(latFrom)*-1,RadToDeg(longitude1),RadToDeg(latitude1)*-1);
|
begin
|
||||||
|
if not LongP then
|
||||||
|
ob^.GC_line_part(RadToDeg(lonFrom),RadToDeg(latFrom)*-1,RadToDeg(longitude1),RadToDeg(latitude1)*-1)
|
||||||
|
else
|
||||||
|
ob^.GC_Lline_part(RadToDeg(lonFrom),RadToDeg(latFrom)*-1,RadToDeg(longitude1),RadToDeg(latitude1)*-1)
|
||||||
|
end;
|
||||||
|
|
||||||
|
oldbearing:=bearing;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -25,97 +25,144 @@ object frmPreferences: TfrmPreferences
|
|||||||
Width = 697
|
Width = 697
|
||||||
ActivePage = tabProgram
|
ActivePage = tabProgram
|
||||||
Align = alClient
|
Align = alClient
|
||||||
TabIndex = 4
|
TabIndex = 0
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = pgPreferencesChange
|
OnChange = pgPreferencesChange
|
||||||
object tabProgram: TTabSheet
|
object tabProgram: TTabSheet
|
||||||
Caption = 'Program'
|
Caption = 'Program'
|
||||||
ClientHeight = 672
|
ClientHeight = 650
|
||||||
ClientWidth = 687
|
ClientWidth = 700
|
||||||
object Label60: TLabel
|
object lblWebBrowser: TLabel
|
||||||
Left = 364
|
AnchorSideLeft.Control = gbInternet
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = rgStatistics
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 350
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 91
|
Top = 78
|
||||||
Width = 248
|
Width = 249
|
||||||
|
BorderSpacing.Left = 3
|
||||||
|
BorderSpacing.Top = 3
|
||||||
Caption = 'Web browser for cqrlog (if not default)'
|
Caption = 'Web browser for cqrlog (if not default)'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object GroupBox2: TGroupBox
|
object gbInternet: TGroupBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = tabProgram
|
||||||
Height = 137
|
AnchorSideTop.Control = tabProgram
|
||||||
|
Left = 6
|
||||||
|
Height = 129
|
||||||
Top = 3
|
Top = 3
|
||||||
Width = 341
|
Width = 341
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 3
|
||||||
Caption = ' Internet connection '
|
Caption = ' Internet connection '
|
||||||
ClientHeight = 111
|
ClientHeight = 111
|
||||||
ClientWidth = 335
|
ClientWidth = 339
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object Label12: TLabel
|
object lblintProxy: TLabel
|
||||||
|
AnchorSideTop.Control = edtProxy
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 7
|
Left = 7
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 24
|
Top = 24
|
||||||
Width = 43
|
Width = 40
|
||||||
Caption = 'Proxy:'
|
Caption = 'Proxy:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label13: TLabel
|
object lblIntPort: TLabel
|
||||||
Left = 192
|
AnchorSideLeft.Control = lblIntPasswd
|
||||||
|
AnchorSideTop.Control = edtPort
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 173
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 24
|
Top = 24
|
||||||
Width = 34
|
Width = 30
|
||||||
Caption = 'Port:'
|
Caption = 'Port:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label14: TLabel
|
object lblIntUser: TLabel
|
||||||
|
AnchorSideLeft.Control = lblintProxy
|
||||||
|
AnchorSideTop.Control = edtUser
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
Left = 7
|
Left = 7
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 69
|
Top = 67
|
||||||
Width = 35
|
Width = 34
|
||||||
Caption = 'User:'
|
Caption = 'User:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label19: TLabel
|
object lblIntPasswd: TLabel
|
||||||
Left = 160
|
AnchorSideTop.Control = edtPasswd
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = edtPasswd
|
||||||
|
Left = 173
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 69
|
Top = 67
|
||||||
Width = 69
|
Width = 66
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
Caption = 'Password:'
|
Caption = 'Password:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object edtProxy: TEdit
|
object edtProxy: TEdit
|
||||||
Left = 52
|
AnchorSideLeft.Control = lblintProxy
|
||||||
Height = 25
|
AnchorSideLeft.Side = asrBottom
|
||||||
Top = 20
|
AnchorSideTop.Control = gbInternet
|
||||||
|
Left = 53
|
||||||
|
Height = 34
|
||||||
|
Top = 15
|
||||||
Width = 100
|
Width = 100
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 15
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
object edtPort: TEdit
|
object edtPort: TEdit
|
||||||
Left = 240
|
AnchorSideTop.Control = edtProxy
|
||||||
Height = 25
|
AnchorSideRight.Control = gbInternet
|
||||||
Top = 20
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 245
|
||||||
|
Height = 34
|
||||||
|
Top = 15
|
||||||
Width = 88
|
Width = 88
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 6
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object edtUser: TEdit
|
object edtUser: TEdit
|
||||||
Left = 52
|
AnchorSideLeft.Control = edtProxy
|
||||||
Height = 25
|
AnchorSideTop.Control = edtProxy
|
||||||
Top = 64
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 53
|
||||||
|
Height = 34
|
||||||
|
Top = 58
|
||||||
Width = 100
|
Width = 100
|
||||||
|
BorderSpacing.Top = 9
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object edtPasswd: TEdit
|
object edtPasswd: TEdit
|
||||||
Left = 240
|
AnchorSideTop.Control = edtPort
|
||||||
Height = 25
|
AnchorSideTop.Side = asrBottom
|
||||||
Top = 64
|
AnchorSideRight.Control = edtPort
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 245
|
||||||
|
Height = 34
|
||||||
|
Top = 58
|
||||||
Width = 88
|
Width = 88
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Top = 9
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object rgStatistics: TRadioGroup
|
object rgStatistics: TRadioGroup
|
||||||
Left = 359
|
AnchorSideLeft.Control = gbInternet
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = gbInternet
|
||||||
|
Left = 350
|
||||||
Height = 72
|
Height = 72
|
||||||
Top = 3
|
Top = 3
|
||||||
Width = 136
|
Width = 136
|
||||||
AutoFill = True
|
AutoFill = True
|
||||||
|
BorderSpacing.Left = 3
|
||||||
Caption = ' Show statistics in '
|
Caption = ' Show statistics in '
|
||||||
ChildSizing.LeftRightSpacing = 6
|
ChildSizing.LeftRightSpacing = 6
|
||||||
ChildSizing.TopBottomSpacing = 6
|
ChildSizing.TopBottomSpacing = 6
|
||||||
@ -125,8 +172,8 @@ object frmPreferences: TfrmPreferences
|
|||||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
ChildSizing.ControlsPerLine = 1
|
ChildSizing.ControlsPerLine = 1
|
||||||
ClientHeight = 46
|
ClientHeight = 54
|
||||||
ClientWidth = 130
|
ClientWidth = 134
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'MHz'
|
'MHz'
|
||||||
'meters'
|
'meters'
|
||||||
@ -134,195 +181,377 @@ object frmPreferences: TfrmPreferences
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
end
|
end
|
||||||
object edtWebBrowser: TEdit
|
object edtWebBrowser: TEdit
|
||||||
Left = 360
|
AnchorSideLeft.Control = lblWebBrowser
|
||||||
Height = 25
|
AnchorSideTop.Control = lblWebBrowser
|
||||||
Top = 115
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 350
|
||||||
|
Height = 34
|
||||||
|
Top = 98
|
||||||
Width = 176
|
Width = 176
|
||||||
|
BorderSpacing.Top = 3
|
||||||
OnClick = edtWebBrowserClick
|
OnClick = edtWebBrowserClick
|
||||||
OnExit = edtWebBrowserExit
|
OnExit = edtWebBrowserExit
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
object chkNewDXCCTables: TCheckBox
|
object chkNewDXCCTables: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = gbInternet
|
||||||
|
AnchorSideTop.Control = gbInternet
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 152
|
Top = 135
|
||||||
Width = 439
|
Width = 423
|
||||||
|
BorderSpacing.Top = 3
|
||||||
Caption = 'Check for newer version of dxcc tables after program startup'
|
Caption = 'Check for newer version of dxcc tables after program startup'
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
object chkShowDeleted: TCheckBox
|
object chkShowDeleted: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkNewDOKTables
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 224
|
Top = 204
|
||||||
Width = 265
|
Width = 257
|
||||||
Caption = 'Show deleted countries in statistics'
|
Caption = 'Show deleted countries in statistics'
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
end
|
end
|
||||||
object chkSunUTC: TCheckBox
|
object chkSunUTC: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkShowDeleted
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 248
|
Top = 227
|
||||||
Width = 212
|
Width = 206
|
||||||
Caption = 'Show sunrise/sunset in UTC'
|
Caption = 'Show sunrise/sunset in UTC'
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
end
|
end
|
||||||
object chkNewQSLTables: TCheckBox
|
object chkNewQSLTables: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 174
|
Top = 158
|
||||||
Width = 522
|
Width = 505
|
||||||
Caption = 'Check for newer version of qsl managers database after program startup'
|
Caption = 'Check for newer version of qsl managers database after program startup'
|
||||||
TabOrder = 6
|
TabOrder = 6
|
||||||
end
|
end
|
||||||
object GroupBox33: TGroupBox
|
object gbOffsets: TGroupBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = gbInternet
|
||||||
Height = 147
|
AnchorSideTop.Control = lblQsoColorDate
|
||||||
Top = 379
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
|
Height = 195
|
||||||
|
Top = 327
|
||||||
Width = 626
|
Width = 626
|
||||||
|
BorderSpacing.Top = 3
|
||||||
Caption = ' Offsets '
|
Caption = ' Offsets '
|
||||||
ClientHeight = 121
|
ClientHeight = 177
|
||||||
ClientWidth = 620
|
ClientWidth = 624
|
||||||
TabOrder = 7
|
TabOrder = 7
|
||||||
object Label15: TLabel
|
object lblUtc: TLabel
|
||||||
Left = 15
|
AnchorSideLeft.Control = edtOffset
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideBottom.Control = edtOffset
|
||||||
|
Left = 469
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 50
|
Top = 3
|
||||||
Width = 28
|
Width = 27
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
Caption = 'UTC'
|
Caption = 'UTC'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label59: TLabel
|
object lblGrayline: TLabel
|
||||||
Left = 352
|
AnchorSideLeft.Control = LblTimes
|
||||||
|
AnchorSideTop.Control = chkSysUTC
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 10
|
Top = 64
|
||||||
Width = 56
|
Width = 59
|
||||||
Caption = 'Grayline'
|
BorderSpacing.Top = 15
|
||||||
|
Caption = 'Grayline:'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object Label94: TLabel
|
object lblSunRiseSet: TLabel
|
||||||
Left = 72
|
AnchorSideLeft.Control = edtSunOffset
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideBottom.Control = edtSunOffset
|
||||||
|
Left = 533
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 50
|
Top = 3
|
||||||
Width = 81
|
Width = 76
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
Caption = 'Sun rise/set'
|
Caption = 'Sun rise/set'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object edtOffset: TEdit
|
object edtOffset: TEdit
|
||||||
Left = 7
|
AnchorSideLeft.Side = asrBottom
|
||||||
Height = 25
|
AnchorSideTop.Control = chkSysUTC
|
||||||
Top = 74
|
AnchorSideTop.Side = asrCenter
|
||||||
Width = 52
|
AnchorSideRight.Control = edtSunOffset
|
||||||
|
Left = 452
|
||||||
|
Height = 34
|
||||||
|
Top = 20
|
||||||
|
Width = 60
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 30
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
Text = '0'
|
Text = '0'
|
||||||
end
|
end
|
||||||
object edtGrayLineOffset: TEdit
|
object edtGrayLineOffset: TEdit
|
||||||
Left = 352
|
AnchorSideLeft.Control = lblGraylineHint
|
||||||
Height = 25
|
AnchorSideLeft.Side = asrCenter
|
||||||
Top = 34
|
AnchorSideTop.Control = lblGrayline
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 128
|
||||||
|
Height = 34
|
||||||
|
Top = 81
|
||||||
Width = 50
|
Width = 50
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
Text = '0'
|
Text = '0'
|
||||||
end
|
end
|
||||||
object edtSunOffset: TEdit
|
object edtSunOffset: TEdit
|
||||||
Left = 74
|
AnchorSideLeft.Side = asrBottom
|
||||||
Height = 25
|
AnchorSideTop.Control = edtOffset
|
||||||
Top = 74
|
AnchorSideTop.Side = asrCenter
|
||||||
Width = 50
|
AnchorSideRight.Control = gbOffsets
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 542
|
||||||
|
Height = 34
|
||||||
|
Top = 20
|
||||||
|
Width = 58
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Right = 24
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
Text = '0'
|
Text = '0'
|
||||||
end
|
end
|
||||||
object chkSysUTC: TCheckBox
|
object chkSysUTC: TCheckBox
|
||||||
Left = 7
|
AnchorSideLeft.Control = gbOffsets
|
||||||
|
AnchorSideTop.Control = LblTimes
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 3
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 10
|
Top = 26
|
||||||
Width = 255
|
Width = 247
|
||||||
|
BorderSpacing.Left = 3
|
||||||
|
BorderSpacing.Top = 6
|
||||||
Caption = 'get UTC time from computer time'
|
Caption = 'get UTC time from computer time'
|
||||||
OnClick = chkSysUTCClick
|
OnClick = chkSysUTCClick
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
end
|
end
|
||||||
object Label197: TLabel
|
object lblGraylineHint: TLabel
|
||||||
Left = 248
|
AnchorSideLeft.Control = LblTimes
|
||||||
|
AnchorSideTop.Control = edtGrayLineOffset
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 34
|
Height = 34
|
||||||
Top = 66
|
Top = 115
|
||||||
Width = 303
|
Width = 294
|
||||||
Caption = 'Sometimes grayline is not accurate, you can '#10'enter the correction here (in hours, try -1.25)'
|
Caption = 'Sometimes grayline is not accurate, you can '#10'enter the correction here (in hours, try -1.25)'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
|
object LblTimes: TLabel
|
||||||
|
AnchorSideLeft.Control = gbOffsets
|
||||||
|
AnchorSideTop.Control = gbOffsets
|
||||||
|
Left = 6
|
||||||
|
Height = 17
|
||||||
|
Top = 3
|
||||||
|
Width = 36
|
||||||
|
BorderSpacing.Left = 6
|
||||||
|
BorderSpacing.Top = 3
|
||||||
|
Caption = 'Time:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object edtGCStep: TEdit
|
||||||
|
AnchorSideTop.Control = edtGrayLineOffset
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = edtOffset
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 432
|
||||||
|
Height = 34
|
||||||
|
Top = 81
|
||||||
|
Width = 80
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
OnExit = edtGCStepExit
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object edtGCPolarDivisor: TEdit
|
||||||
|
AnchorSideTop.Control = edtGrayLineOffset
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = lblSunRiseSet
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 529
|
||||||
|
Height = 34
|
||||||
|
Top = 81
|
||||||
|
Width = 80
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
NumbersOnly = True
|
||||||
|
OnExit = edtGCPolarDivisorExit
|
||||||
|
TabOrder = 5
|
||||||
|
end
|
||||||
|
object lblGCStep: TLabel
|
||||||
|
AnchorSideLeft.Control = edtGCStep
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideBottom.Control = edtGCStep
|
||||||
|
Left = 458
|
||||||
|
Height = 17
|
||||||
|
Top = 64
|
||||||
|
Width = 29
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
Caption = 'Step'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object lblGCDivisor: TLabel
|
||||||
|
AnchorSideLeft.Control = edtGCPolarDivisor
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideBottom.Control = edtGCPolarDivisor
|
||||||
|
Left = 546
|
||||||
|
Height = 17
|
||||||
|
Top = 64
|
||||||
|
Width = 46
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
Caption = 'Divisor'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object lblGCHint: TLabel
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = edtGCPolarDivisor
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = edtGCPolarDivisor
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 313
|
||||||
|
Height = 51
|
||||||
|
Top = 115
|
||||||
|
Width = 296
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Great circle plotting setps in desimal degrees'#10'Step divisor is used in polar areas N and S '#10'where distance/degree is smaller'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object lblGLOffset: TLabel
|
||||||
|
AnchorSideLeft.Control = edtGrayLineOffset
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideBottom.Control = edtGrayLineOffset
|
||||||
|
Left = 133
|
||||||
|
Height = 17
|
||||||
|
Top = 64
|
||||||
|
Width = 40
|
||||||
|
Anchors = [akLeft, akBottom]
|
||||||
|
Caption = 'Offset'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object chkShowMiles: TCheckBox
|
object chkShowMiles: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkSunUTC
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 273
|
Top = 250
|
||||||
Width = 178
|
Width = 176
|
||||||
Caption = 'Show distance in miles'
|
Caption = 'Show distance in miles'
|
||||||
TabOrder = 8
|
TabOrder = 8
|
||||||
end
|
end
|
||||||
object btnCfgStorage: TButton
|
object btnCfgStorage: TButton
|
||||||
Left = 14
|
AnchorSideLeft.Control = gbOffsets
|
||||||
Height = 27
|
AnchorSideTop.Control = gbOffsets
|
||||||
Top = 539
|
AnchorSideTop.Side = asrBottom
|
||||||
Width = 222
|
Left = 6
|
||||||
|
Height = 33
|
||||||
|
Top = 528
|
||||||
|
Width = 213
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 6
|
||||||
Caption = 'Configuration storage settings'
|
Caption = 'Configuration storage settings'
|
||||||
OnClick = btnCfgStorageClick
|
OnClick = btnCfgStorageClick
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
end
|
end
|
||||||
object chkQSOColor: TCheckBox
|
object chkQSOColor: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkShowMiles
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 307
|
Top = 273
|
||||||
Width = 130
|
Width = 124
|
||||||
Caption = 'QSO older than'
|
Caption = 'QSO older than'
|
||||||
TabOrder = 10
|
TabOrder = 10
|
||||||
end
|
end
|
||||||
object edtQSOColorDate: TEdit
|
object edtQSOColorDate: TEdit
|
||||||
Left = 160
|
AnchorSideLeft.Control = chkQSOColor
|
||||||
Height = 25
|
AnchorSideLeft.Side = asrBottom
|
||||||
Top = 307
|
AnchorSideTop.Control = chkQSOColor
|
||||||
|
Left = 133
|
||||||
|
Height = 34
|
||||||
|
Top = 273
|
||||||
Width = 104
|
Width = 104
|
||||||
|
BorderSpacing.Left = 3
|
||||||
TabOrder = 11
|
TabOrder = 11
|
||||||
Text = '2017-04-18'
|
Text = '2017-04-18'
|
||||||
end
|
end
|
||||||
object Label46: TLabel
|
object lblDiffColor: TLabel
|
||||||
Left = 274
|
AnchorSideLeft.Control = edtQSOColorDate
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = edtQSOColorDate
|
||||||
|
Left = 240
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 310
|
Top = 273
|
||||||
Width = 172
|
Width = 162
|
||||||
|
BorderSpacing.Left = 3
|
||||||
Caption = 'show with different color'
|
Caption = 'show with different color'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object pnlQSOColor: TPanel
|
object pnlQSOColor: TPanel
|
||||||
Left = 472
|
AnchorSideLeft.Control = lblDiffColor
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = lblDiffColor
|
||||||
|
Left = 405
|
||||||
Height = 42
|
Height = 42
|
||||||
Top = 298
|
Top = 273
|
||||||
Width = 106
|
Width = 106
|
||||||
|
BorderSpacing.Left = 3
|
||||||
BevelInner = bvRaised
|
BevelInner = bvRaised
|
||||||
TabOrder = 12
|
TabOrder = 12
|
||||||
OnClick = pnlQSOColorClick
|
OnClick = pnlQSOColorClick
|
||||||
end
|
end
|
||||||
object btnSelectQSOColor: TButton
|
object btnSelectQSOColor: TButton
|
||||||
Left = 587
|
AnchorSideLeft.Control = pnlQSOColor
|
||||||
Height = 27
|
AnchorSideLeft.Side = asrBottom
|
||||||
Top = 307
|
AnchorSideTop.Control = pnlQSOColor
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 523
|
||||||
|
Height = 33
|
||||||
|
Top = 278
|
||||||
Width = 56
|
Width = 56
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
|
BorderSpacing.Left = 12
|
||||||
Caption = 'Select'
|
Caption = 'Select'
|
||||||
OnClick = btnSelectQSOColorClick
|
OnClick = btnSelectQSOColorClick
|
||||||
TabOrder = 13
|
TabOrder = 13
|
||||||
end
|
end
|
||||||
object Label47: TLabel
|
object lblQsoColorDate: TLabel
|
||||||
Left = 160
|
AnchorSideLeft.Control = edtQSOColorDate
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideTop.Control = edtQSOColorDate
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 138
|
||||||
Height = 17
|
Height = 17
|
||||||
Top = 340
|
Top = 307
|
||||||
Width = 103
|
Width = 94
|
||||||
Caption = '(YYYY-MM-DD)'
|
Caption = '(YYYY-MM-DD)'
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object chkNewDOKTables: TCheckBox
|
object chkNewDOKTables: TCheckBox
|
||||||
Left = 14
|
AnchorSideLeft.Control = chkNewDXCCTables
|
||||||
|
AnchorSideTop.Control = chkNewQSLTables
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
Left = 6
|
||||||
Height = 23
|
Height = 23
|
||||||
Top = 197
|
Top = 181
|
||||||
Width = 464
|
Width = 446
|
||||||
Caption = 'Check for newer version of DOK database after program startup'
|
Caption = 'Check for newer version of DOK database after program startup'
|
||||||
TabOrder = 14
|
TabOrder = 14
|
||||||
end
|
end
|
||||||
|
@ -513,6 +513,8 @@ type
|
|||||||
DateEditCall: TDateEdit;
|
DateEditCall: TDateEdit;
|
||||||
DateEditLoc: TDateEdit;
|
DateEditLoc: TDateEdit;
|
||||||
dlgColor : TColorDialog;
|
dlgColor : TColorDialog;
|
||||||
|
edtGCStep: TEdit;
|
||||||
|
edtGCPolarDivisor: TEdit;
|
||||||
edtUsrBtn: TEdit;
|
edtUsrBtn: TEdit;
|
||||||
edtUsr1R1Name: TEdit;
|
edtUsr1R1Name: TEdit;
|
||||||
edtR2Host: TEdit;
|
edtR2Host: TEdit;
|
||||||
@ -679,7 +681,7 @@ type
|
|||||||
GroupBox17: TGroupBox;
|
GroupBox17: TGroupBox;
|
||||||
GroupBox18: TGroupBox;
|
GroupBox18: TGroupBox;
|
||||||
GroupBox19: TGroupBox;
|
GroupBox19: TGroupBox;
|
||||||
GroupBox2: TGroupBox;
|
gbInternet: TGroupBox;
|
||||||
GroupBox20: TGroupBox;
|
GroupBox20: TGroupBox;
|
||||||
GroupBox21: TGroupBox;
|
GroupBox21: TGroupBox;
|
||||||
GroupBox22: TGroupBox;
|
GroupBox22: TGroupBox;
|
||||||
@ -696,7 +698,7 @@ type
|
|||||||
grpUsrCmds: TGroupBox;
|
grpUsrCmds: TGroupBox;
|
||||||
GroupBox31: TGroupBox;
|
GroupBox31: TGroupBox;
|
||||||
GroupBox32: TGroupBox;
|
GroupBox32: TGroupBox;
|
||||||
GroupBox33: TGroupBox;
|
gbOffsets: TGroupBox;
|
||||||
GroupBox34: TGroupBox;
|
GroupBox34: TGroupBox;
|
||||||
GroupBox35: TGroupBox;
|
GroupBox35: TGroupBox;
|
||||||
gbeQSL: TGroupBox;
|
gbeQSL: TGroupBox;
|
||||||
@ -732,6 +734,11 @@ type
|
|||||||
Label1: TLabel;
|
Label1: TLabel;
|
||||||
Label10: TLabel;
|
Label10: TLabel;
|
||||||
Label108: TLabel;
|
Label108: TLabel;
|
||||||
|
lblGLOffset: TLabel;
|
||||||
|
lblGCStep: TLabel;
|
||||||
|
lblGCDivisor: TLabel;
|
||||||
|
lblGCHint: TLabel;
|
||||||
|
LblTimes: TLabel;
|
||||||
Label17: TLabel;
|
Label17: TLabel;
|
||||||
lblUsrBtn: TLabel;
|
lblUsrBtn: TLabel;
|
||||||
lblHost2: TLabel;
|
lblHost2: TLabel;
|
||||||
@ -777,7 +784,7 @@ type
|
|||||||
Label117: TLabel;
|
Label117: TLabel;
|
||||||
Label118: TLabel;
|
Label118: TLabel;
|
||||||
Label119: TLabel;
|
Label119: TLabel;
|
||||||
Label12: TLabel;
|
lblintProxy: TLabel;
|
||||||
Label120: TLabel;
|
Label120: TLabel;
|
||||||
Label121: TLabel;
|
Label121: TLabel;
|
||||||
Label122: TLabel;
|
Label122: TLabel;
|
||||||
@ -789,7 +796,7 @@ type
|
|||||||
lbleQSLBkg: TLabel;
|
lbleQSLBkg: TLabel;
|
||||||
lblRadio2: TLabel;
|
lblRadio2: TLabel;
|
||||||
lblRotId1: TLabel;
|
lblRotId1: TLabel;
|
||||||
Label13: TLabel;
|
lblIntPort: TLabel;
|
||||||
lblSerialR1Spd: TLabel;
|
lblSerialR1Spd: TLabel;
|
||||||
lblserialR1DataBits: TLabel;
|
lblserialR1DataBits: TLabel;
|
||||||
lblSerialR1Stop: TLabel;
|
lblSerialR1Stop: TLabel;
|
||||||
@ -800,7 +807,7 @@ type
|
|||||||
lblSerialR2Spd: TLabel;
|
lblSerialR2Spd: TLabel;
|
||||||
lblSerialR2DataBits: TLabel;
|
lblSerialR2DataBits: TLabel;
|
||||||
lblSerialR2Stop: TLabel;
|
lblSerialR2Stop: TLabel;
|
||||||
Label14: TLabel;
|
lblIntUser: TLabel;
|
||||||
lblSerialR2Hand: TLabel;
|
lblSerialR2Hand: TLabel;
|
||||||
lblSerialR2Parity: TLabel;
|
lblSerialR2Parity: TLabel;
|
||||||
lblSerialR2Dtr: TLabel;
|
lblSerialR2Dtr: TLabel;
|
||||||
@ -811,7 +818,7 @@ type
|
|||||||
lblSpeed1: TLabel;
|
lblSpeed1: TLabel;
|
||||||
lblDataBits1: TLabel;
|
lblDataBits1: TLabel;
|
||||||
lblStopBits1: TLabel;
|
lblStopBits1: TLabel;
|
||||||
Label15: TLabel;
|
lblUtc: TLabel;
|
||||||
lblHandshake1: TLabel;
|
lblHandshake1: TLabel;
|
||||||
lblParity1: TLabel;
|
lblParity1: TLabel;
|
||||||
lblDTR1: TLabel;
|
lblDTR1: TLabel;
|
||||||
@ -862,7 +869,7 @@ type
|
|||||||
lblK3NGSpeed: TLabel;
|
lblK3NGSpeed: TLabel;
|
||||||
lblK3NGWPM: TLabel;
|
lblK3NGWPM: TLabel;
|
||||||
lblK3NGSerSpeed: TLabel;
|
lblK3NGSerSpeed: TLabel;
|
||||||
Label197: TLabel;
|
lblGraylineHint: TLabel;
|
||||||
Label198: TLabel;
|
Label198: TLabel;
|
||||||
lblHamLibSpeed: TLabel;
|
lblHamLibSpeed: TLabel;
|
||||||
lblHamLibWPM: TLabel;
|
lblHamLibWPM: TLabel;
|
||||||
@ -876,14 +883,14 @@ type
|
|||||||
lblDebug : TLabel;
|
lblDebug : TLabel;
|
||||||
Label207: TLabel;
|
Label207: TLabel;
|
||||||
lblwsjtaddr: TLabel;
|
lblwsjtaddr: TLabel;
|
||||||
Label46 : TLabel;
|
lblDiffColor : TLabel;
|
||||||
Label47 : TLabel;
|
lblQsoColorDate : TLabel;
|
||||||
Label48: TLabel;
|
Label48: TLabel;
|
||||||
Label49: TLabel;
|
Label49: TLabel;
|
||||||
Label50: TLabel;
|
Label50: TLabel;
|
||||||
Label51: TLabel;
|
Label51: TLabel;
|
||||||
lbl: TLabel;
|
lbl: TLabel;
|
||||||
Label19: TLabel;
|
lblIntPasswd: TLabel;
|
||||||
Label2: TLabel;
|
Label2: TLabel;
|
||||||
lblExtra: TLabel;
|
lblExtra: TLabel;
|
||||||
lblModelR1: TLabel;
|
lblModelR1: TLabel;
|
||||||
@ -909,13 +916,13 @@ type
|
|||||||
Label54: TLabel;
|
Label54: TLabel;
|
||||||
Label55: TLabel;
|
Label55: TLabel;
|
||||||
Label56: TLabel;
|
Label56: TLabel;
|
||||||
Label59: TLabel;
|
lblGrayline: TLabel;
|
||||||
Label61: TLabel;
|
Label61: TLabel;
|
||||||
Label63: TLabel;
|
Label63: TLabel;
|
||||||
Label91: TLabel;
|
Label91: TLabel;
|
||||||
Label92: TLabel;
|
Label92: TLabel;
|
||||||
Label93: TLabel;
|
Label93: TLabel;
|
||||||
Label94: TLabel;
|
lblSunRiseSet: TLabel;
|
||||||
Label95: TLabel;
|
Label95: TLabel;
|
||||||
lblPollR2: TLabel;
|
lblPollR2: TLabel;
|
||||||
lbl1: TLabel;
|
lbl1: TLabel;
|
||||||
@ -952,7 +959,7 @@ type
|
|||||||
Label57: TLabel;
|
Label57: TLabel;
|
||||||
Label58: TLabel;
|
Label58: TLabel;
|
||||||
Label6: TLabel;
|
Label6: TLabel;
|
||||||
Label60: TLabel;
|
lblWebBrowser: TLabel;
|
||||||
lblBandMapFont: TLabel;
|
lblBandMapFont: TLabel;
|
||||||
Label62: TLabel;
|
Label62: TLabel;
|
||||||
Label64: TLabel;
|
Label64: TLabel;
|
||||||
@ -1092,6 +1099,8 @@ type
|
|||||||
procedure cmbModelRot1Change(Sender: TObject);
|
procedure cmbModelRot1Change(Sender: TObject);
|
||||||
procedure cmbModelRot2Change(Sender: TObject);
|
procedure cmbModelRot2Change(Sender: TObject);
|
||||||
procedure edtAlertCmdExit(Sender: TObject);
|
procedure edtAlertCmdExit(Sender: TObject);
|
||||||
|
procedure edtGCPolarDivisorExit(Sender: TObject);
|
||||||
|
procedure edtGCStepExit(Sender: TObject);
|
||||||
procedure edtHtmlFilesClick(Sender: TObject);
|
procedure edtHtmlFilesClick(Sender: TObject);
|
||||||
procedure edtHtmlFilesExit(Sender: TObject);
|
procedure edtHtmlFilesExit(Sender: TObject);
|
||||||
procedure edtImgFilesExit(Sender: TObject);
|
procedure edtImgFilesExit(Sender: TObject);
|
||||||
@ -1226,6 +1235,8 @@ begin
|
|||||||
cqrini.WriteInteger('Program', 'Options', pgPreferences.ActivePageIndex);
|
cqrini.WriteInteger('Program', 'Options', pgPreferences.ActivePageIndex);
|
||||||
cqrini.WriteBool('Program', 'BandStatMHz', rgStatistics.ItemIndex = 0);
|
cqrini.WriteBool('Program', 'BandStatMHz', rgStatistics.ItemIndex = 0);
|
||||||
cqrini.WriteFloat('Program', 'GraylineOffset', StrToCurr(edtGrayLineOffset.Text));
|
cqrini.WriteFloat('Program', 'GraylineOffset', StrToCurr(edtGrayLineOffset.Text));
|
||||||
|
cqrini.WriteFloat('Program', 'GraylineGCstep',StrToCurr(edtGCStep.Caption));
|
||||||
|
cqrini.WriteInteger('Program', 'GraylineGCPolarDivisor',StrToInt(edtGCPolarDivisor.Caption));
|
||||||
|
|
||||||
if edtWebBrowser.Text = '' then edtWebBrowser.Text:= dmUtils.MyDefaultBrowser; //may not be empty string
|
if edtWebBrowser.Text = '' then edtWebBrowser.Text:= dmUtils.MyDefaultBrowser; //may not be empty string
|
||||||
cqrini.WriteString('Program', 'WebBrowser', edtWebBrowser.Text);
|
cqrini.WriteString('Program', 'WebBrowser', edtWebBrowser.Text);
|
||||||
@ -2559,6 +2570,30 @@ begin
|
|||||||
// ~ in command causes DXCluster spot flow stop (!?)
|
// ~ in command causes DXCluster spot flow stop (!?)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPreferences.edtGCPolarDivisorExit(Sender: TObject);
|
||||||
|
var v:integer;
|
||||||
|
begin
|
||||||
|
if TryStrToInt(edtGCPolarDivisor.Caption,v) then
|
||||||
|
begin
|
||||||
|
if ((v<=0) or (v>40)) then
|
||||||
|
edtGCPolarDivisor.Caption:='10' //replace with default
|
||||||
|
end
|
||||||
|
else
|
||||||
|
edtGCPolarDivisor.Caption:='10' //replace with default
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TfrmPreferences.edtGCStepExit(Sender: TObject);
|
||||||
|
var v:extended;
|
||||||
|
begin
|
||||||
|
if TryStrToFloat(edtGCStep.Caption,v) then
|
||||||
|
Begin
|
||||||
|
if ((v<=0) or (v>40)) then
|
||||||
|
edtGCStep.Caption:='1.5'; //error use default value;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
edtGCStep.Caption:='1.5'; //on convert error use default value;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TfrmPreferences.edtHtmlFilesClick(Sender: TObject);
|
procedure TfrmPreferences.edtHtmlFilesClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if odFindBrowser.Execute then
|
if odFindBrowser.Execute then
|
||||||
@ -2635,6 +2670,7 @@ begin
|
|||||||
if not (key in ['0'..'9']) then
|
if not (key in ['0'..'9']) then
|
||||||
key := #0;
|
key := #0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TfrmPreferences.TRXParamsChange(Sender: TObject);
|
procedure TfrmPreferences.TRXParamsChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
TRXChanged := True
|
TRXChanged := True
|
||||||
@ -2769,8 +2805,9 @@ begin
|
|||||||
edtPasswd.Text := cqrini.ReadString('Program', 'Passwd', '');
|
edtPasswd.Text := cqrini.ReadString('Program', 'Passwd', '');
|
||||||
edtOffset.Text := CurrToStr(cqrini.ReadFloat('Program', 'offset', 0));
|
edtOffset.Text := CurrToStr(cqrini.ReadFloat('Program', 'offset', 0));
|
||||||
pgPreferences.ActivePageIndex := cqrini.ReadInteger('Program', 'Options', 0);
|
pgPreferences.ActivePageIndex := cqrini.ReadInteger('Program', 'Options', 0);
|
||||||
edtGrayLineOffset.Text :=
|
edtGrayLineOffset.Text := CurrToStr(cqrini.ReadFloat('Program', 'GraylineOffset', 0));
|
||||||
CurrToStr(cqrini.ReadFloat('Program', 'GraylineOffset', 0));
|
edtGCStep.Caption := CurrToStr(cqrini.ReadFloat('Program', 'GraylineGCstep',15E-001));
|
||||||
|
edtGCPolarDivisor.Caption := IntToStr(cqrini.ReadInteger('Program', 'GraylineGCPolarDivisor',10));
|
||||||
edtWebBrowser.Text := cqrini.ReadString('Program', 'WebBrowser', dmUtils.MyDefaultBrowser);
|
edtWebBrowser.Text := cqrini.ReadString('Program', 'WebBrowser', dmUtils.MyDefaultBrowser);
|
||||||
chkNewDXCCTables.Checked := cqrini.ReadBool('Program', 'CheckDXCCTabs', True);
|
chkNewDXCCTables.Checked := cqrini.ReadBool('Program', 'CheckDXCCTabs', True);
|
||||||
chkShowDeleted.Checked := cqrini.ReadBool('Program', 'ShowDeleted', False);
|
chkShowDeleted.Checked := cqrini.ReadBool('Program', 'ShowDeleted', False);
|
||||||
|
@ -65,8 +65,9 @@ type
|
|||||||
procedure body_add(typ:byte;x1,y1,x2,y2:extended;popis:string;barva:tcolor;vel_bodu:longint);
|
procedure body_add(typ:byte;x1,y1,x2,y2:extended;popis:string;barva:tcolor;vel_bodu:longint);
|
||||||
procedure body_smaz;
|
procedure body_smaz;
|
||||||
|
|
||||||
procedure GC_line_part(x1,y1,x2,y2:double);
|
procedure GC_line_part(x1,y1,x2,y2:double); //add ShortPath point
|
||||||
procedure GC_line_clear;
|
procedure GC_Lline_part(x1,y1,x2,y2:double); //add LongPath point
|
||||||
|
procedure GC_line_clear(what:integer=-1); //clear S&LPath points
|
||||||
|
|
||||||
private
|
private
|
||||||
nrd:boolean; //needs to redraw (a new calculation has been made)
|
nrd:boolean; //needs to redraw (a new calculation has been made)
|
||||||
@ -91,8 +92,11 @@ type
|
|||||||
body:array[0..body_max] of Tcarobod;
|
body:array[0..body_max] of Tcarobod;
|
||||||
body_poc:longint;
|
body_poc:longint;
|
||||||
|
|
||||||
GC_point:array[0..GC_points_Max] of TGC_point;
|
GC_point:array[0..GC_points_Max] of TGC_point; //ShortPath array
|
||||||
GCpointer:longint;
|
GCpointer:longint;
|
||||||
|
GC_Lpoint:array[0..GC_points_Max] of TGC_point; //LongPath array
|
||||||
|
GCLpointer:longint;
|
||||||
|
LP : boolean; //set LongPath color;
|
||||||
|
|
||||||
function calc_horizontalx(var coord:t_coord; date:TDateTime; z:longint;latitude: extended):longint;
|
function calc_horizontalx(var coord:t_coord; date:TDateTime; z:longint;latitude: extended):longint;
|
||||||
end;
|
end;
|
||||||
@ -519,6 +523,7 @@ var e,z:longint;
|
|||||||
|
|
||||||
body_poc:=0;
|
body_poc:=0;
|
||||||
GCpointer:=0;
|
GCpointer:=0;
|
||||||
|
GCLpointer:=0;
|
||||||
|
|
||||||
poslednicas:=now-1000000;
|
poslednicas:=now-1000000;
|
||||||
nrd:=false;
|
nrd:=false;
|
||||||
@ -708,7 +713,10 @@ var
|
|||||||
can.pen.Width:=5;
|
can.pen.Width:=5;
|
||||||
can.moveto(x1,y1);
|
can.moveto(x1,y1);
|
||||||
can.lineto(x2,y2);
|
can.lineto(x2,y2);
|
||||||
can.pen.color:=clyellow;
|
If LP then
|
||||||
|
can.pen.color:=clFuchsia
|
||||||
|
else
|
||||||
|
can.pen.color:=clyellow;
|
||||||
can.pen.Width:=2;
|
can.pen.Width:=2;
|
||||||
can.moveto(x1,y1);
|
can.moveto(x1,y1);
|
||||||
can.lineto(x2,y2);
|
can.lineto(x2,y2);
|
||||||
@ -882,13 +890,15 @@ begin
|
|||||||
// can.TextOut(10,30,' '+inttostr(round(carax2))+':'+inttostr(round(caray2))+' ');
|
// can.TextOut(10,30,' '+inttostr(round(carax2))+':'+inttostr(round(caray2))+' ');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if GCpointer > 0 then
|
if GCpointer+GCLpointer > 0 then //same as OR
|
||||||
begin
|
begin
|
||||||
|
LP:=True; //LongPath color plotting
|
||||||
|
for z:=0 to GCLpointer-1 do
|
||||||
|
cmarni(GC_Lpoint[z].La1, GC_Lpoint[z].Lo1, GC_Lpoint[z].La2, GC_Lpoint[z].Lo2, false);
|
||||||
|
LP:=False; //ShortPath color plotting
|
||||||
for z:=0 to GCpointer-1 do
|
for z:=0 to GCpointer-1 do
|
||||||
begin
|
|
||||||
cmarni(GC_point[z].La1, GC_point[z].Lo1, GC_point[z].La2, GC_point[z].Lo2, false);
|
cmarni(GC_point[z].La1, GC_point[z].Lo1, GC_point[z].La2, GC_point[z].Lo2, false);
|
||||||
end;
|
end;
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
for z:=0 to body_poc-1 do
|
for z:=0 to body_poc-1 do
|
||||||
@ -973,11 +983,31 @@ Begin
|
|||||||
inc(GCpointer);
|
inc(GCpointer);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
procedure Tgrayline.GC_Lline_part(x1,y1,x2,y2:double);
|
||||||
procedure Tgrayline.GC_line_clear;
|
|
||||||
|
|
||||||
Begin
|
Begin
|
||||||
GCpointer:=0;
|
if chcipni then exit; //chcipni = "die"
|
||||||
|
if GCLpointer < GC_Points_max then
|
||||||
|
begin
|
||||||
|
GC_Lpoint[GCLpointer].La1:=x1;
|
||||||
|
GC_Lpoint[GCLpointer].Lo1:=y1;
|
||||||
|
GC_Lpoint[GCLpointer].La2:=x2;
|
||||||
|
GC_Lpoint[GCLpointer].Lo2:=y2;
|
||||||
|
inc(GCLpointer);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Tgrayline.GC_line_clear(what:integer=-1);
|
||||||
|
|
||||||
|
begin
|
||||||
|
case what of
|
||||||
|
-1: Begin
|
||||||
|
GCpointer:=0;
|
||||||
|
GCLpointer:=0;
|
||||||
|
end;
|
||||||
|
0: GCpointer:=0;
|
||||||
|
1: GCLpointer:=0;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -20,7 +20,7 @@ const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
cBUILD_DATE = '2022-02-15';
|
cBUILD_DATE = '2022-02-21';
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
Loading…
Reference in New Issue
Block a user