📄 gis.txt
字号:
SelTargetDlg.clbTargets.Items.AddObject(Targets[I].Name,
TObject(Targets[I].ID));
if SelTargetDlg.ShowModal = mrOK then
begin
with SelTargetDlg do
for I := 0 to clbTargets.Items.Count - 1 do
if clbTargets.Checked[I] then
PollingTarget(Integer(clbTargets.Items.Objects[I]));
end;
SelTargetDlg.Free;
tmrGpsData.Enabled := True;
end;
/////////////////////////////////////////////////////////////////
// 地图放大操作
/////////////////////////////////////////////////////////////////
procedure TMainForm.tbnZoomInClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_ZOOMIN;
end;
////////////////////////////////////////////////////////////////
// 地图缩小操作
////////////////////////////////////////////////////////////////
procedure TMainForm.tbnZoomOutClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_ZOOMOUT;
end;
/////////////////////////////////////////////////////////////////
// 地图漫游操作
//////////////////////////////////////////////////////////////////
procedure TMainForm.tbnGrabClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_PAN;
end;
////////////////////////////////////////////////////////////////
// 地图测量长度操作
////////////////////////////////////////////////////////////////
procedure TMainForm.tbnMeasureLenClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MEASURELENGTH;
end;
////////////////////////////////////////////////////////////////
// 地图测量面积操作
/////////////////////////////////////////////////////////////////
procedure TMainForm.tbnMeasureAreaClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MEASUREAREA;
end;
///////////////////////////////////////////////////////////////
// 地图放大镜操作
///////////////////////////////////////////////////////////////
procedure TMainForm.tbnMagnifierClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MAGNIFIER;
end;
//////////////////////////////////////////////////////////////
// 地图圆形选取地物操作
//////////////////////////////////////////////////////////////
procedure TMainForm.tbnRoundSelClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MAPROUNDSELECT;
end;
////////////////////////////////////////////////////////////////
// 地图多边形选取地物操作
/////////////////////////////////////////////////////////////////
procedure TMainForm.tbnPolygonSelClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MAPPOLYGONSELECT;
end;
////////////////////////////////////////////////////////////////
// 地图矩形选取地物操作
/////////////////////////////////////////////////////////////////
procedure TMainForm.tbnRectangleSelClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MAPRECTSELECT;
end;
/////////////////////////////////////////////////////////////////
// 地图点选地物操作
/////////////////////////////////////////////////////////////////
procedure TMainForm.tbnPointSelClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_MAPPOINTSELECT;
end;
procedure TMainForm.tbnSelTargetClick(Sender: TObject);
begin
GpsManager.ActionType := ACTIONTYPE_SELECTTARGET;
end;
///////////////////////////////////////////////////////////////
// 打印地图
////////////////////////////////////////////////////////////////
procedure TMainForm.tbPrintClick(Sender: TObject);
begin
ActiveGpsCtrl.LTPrint(PRINT_ALL);
end;
///////////////////////////////////////////////////////////////
// 图层管理器
////////////////////////////////////////////////////////////////
procedure TMainForm.tbnMapLayersClick(Sender: TObject);
begin
ActiveGpsCtrl.DoLayerManager;
end;
////////////////////////////////////////////////////////////
// 终止回传操作
////////////////////////////////////////////////////////////
procedure TMainForm.btnStopPollingClick(Sender: TObject);
var
I: Integer;
TargetID: Longint;
SelTargetDlg: TSelTargetDlg;
begin
SelTargetDlg := TSelTargetDlg.Create(Self);
SelTargetDlg.clbTargets.Items.Clear;
for I := 0 to PollingTargets.Count - 1 do
SelTargetDlg.clbTargets.Items.AddObject(GetTargetName(Integer(PollingTargets[I])),
TObject(PollingTargets[I]));
if SelTargetDlg.ShowModal = mrOK then
begin
tmrGpsData.Enabled := False;
with SelTargetDlg do
begin
for I := 0 to clbTargets.Items.Count - 1 do
if clbTargets.Checked[I] then
begin
TargetID := Integer(clbTargets.Items.Objects[I]);
(*******************************************)
(* *)
GpsManager.DelTarget(TargetID);
(* *)
(*******************************************)
StopPollingTarget(TargetID);
DeleteTargetData(GetTargetName(TargetID));
end;
end;
tmrGpsData.Enabled := PollingTargets.Count > 0;
end;
SelTargetDlg.Free;
end;
//////////////////////////////////////////////////////////////////////
// OnCreate事件处理程序
//////////////////////////////////////////////////////////////////////
procedure TMainForm.FormCreate(Sender: TObject);
var
I: Integer;
begin
//载入地图及符号库
LoadMapsSymbols;
(*******************************************************)
(* *)
if GpsManager.GeoMaps.Count > 0 then
begin
GpsManager.GeoMaps.Begin_;
for I := 0 to GpsManager.GeoMaps.Count - 1 do
cbbMaps.Items.Add(GpsManager.GeoMaps.GetNext.Name);
end;
(* *)
(*******************************************************)
cbbMaps.ItemIndex := 0;
// 建立目标数组
InitTargets(MAX_TARGETS);
//目标名称显示位置
with cbbCaptionPos, Items do
begin
AddObject('尾部', TObject(POS_TAIL));
AddObject('左上角', TObject(POS_LEFTTOP));
AddObject('顶部', TObject(POS_TOP));
AddObject('右上角', TObject(POS_RIGHTTOP));
AddObject('右侧', TObject(POS_RIGHT));
AddObject('右下角', TObject(POS_RIGHTBOTTOM));
AddObject('底部', TObject(POS_BOTTOM));
AddObject('左下角', TObject(POS_LEFTBOTTOM));
AddObject('左侧', TObject(POS_LEFT));
ItemIndex := 0;
end;
//可供用户选择的颜色设置
AddComboBoxColors(Self);
//系统默认设置
SetLTDefault;
pgcControlPanel.ActivePage := tsMonitor;
end;
/////////////////////////////////////////////////////////
// 增加监控窗口操作
/////////////////////////////////////////////////////////
procedure TMainForm.btnAddWinClick(Sender: TObject);
begin
CreateMonitorWindow;
Tile;
end;
/////////////////////////////////////////////////////////
// 系统缺省设置
/////////////////////////////////////////////////////////
procedure TMainForm.SetLTDefault;
begin
//多目标监控状态
sbnMulti.Down := True;
{***************************************************************}
{** 目标属性 **}
{***************************************************************}
//去零漂
cbDisableMoveOnQuiet.Checked := GpsManager.DisableMoveOnQuiet;
//去零漂速度限制
edtSpeedLimit.Text := IntToStr(Round(GpsManager.SpeedLimit));
//正常目标名称前景色
cbbNormalFg.ItemIndex :=
cbbNormalFg.Items.IndexOfObject(TObject(GpsManager.TargetNameNormalFontColor));
//正常目标名称背景色
cbbNormalBg.ItemIndex :=
cbbNormalBg.Items.IndexOfObject(TObject(GpsManager.TargetNameNormalBackColor));
//激活目标名称前景色
cbbActiveFg.ItemIndex :=
cbbActiveFg.Items.IndexOfObject(TObject(GpsManager.TargetNameActiveFontColor));
//激活目标名称背景色
cbbActiveBg.ItemIndex :=
cbbActiveBg.Items.IndexOfObject(TObject(GpsManager.TargetNameActiveBackColor));
//目标符号宽度
edtSymbolWidth.Text := IntToStr(GpsManager.CarSymbolWidth);
//目标符号高度
edtSymbolHeight.Text := IntToStr(GpsManager.CarSymbolHeight);
//目标名称位置
cbbCaptionPos.ItemIndex := 0;
//误差圈颜色
cbbErrCircleColor.ItemIndex :=
cbbErrCircleColor.Items.IndexOfObject(TObject(GpsManager.ErrRoundColor));
//误差圈半径
edtErrorCircleRadius.Text := IntToStr(Round(GpsManager.ErrorRoundRadius));
//误差圈宽度
edtErrorCircleWidth.Text := IntToStr(GpsManager.ErrRoundWidth);
{***************************************************************}
{** 显示属性 **}
{***************************************************************}
//放大镜尺寸
edtMagnifierH.Text := IntToStr(GpsManager.MagnifierHeight);
edtMagnifierW.Text := IntToStr(GpsManager.MagnifierWidth);
//放大倍数
edtMagnifierRatio.Text := IntToStr(GpsManager.MagnifierTime);
//轨迹点颜色
cbbPointColor.ItemIndex :=
cbbPointColor.Items.IndexOfObject(TObject(GpsManager.TailLPointColor));
//轨迹线颜色
cbbLineColor.ItemIndex :=
cbbLineColor.Items.IndexOfObject(TObject(GpsManager.TailLineColor));
//轨迹点半径
edtPointRadius.Text := IntToStr(GpsManager.TailPointSize);
//轨迹线宽度
edtLineWidth.Text := IntToStr(GpsManager.TailLineWidth);
//显示轨迹连线
cbShowTailLine.Checked := Boolean(GpsManager.ShowTailLine);
//显示轨迹点
cbShowTailPoint.Checked := Boolean(GpsManager.ShowTailLine);
end;
procedure TMainForm.SetWinAttribs;
begin
{***************************************************************}
{** 监控窗口属性 **}
{***************************************************************}
//自动换图
cbAutoChangeMap.Checked := Boolean(ActiveGpsCtrl.AutoChangeMap);
//显示标尺
cbShowRuler.Checked := ActiveGpsCtrl.ShowRuler;
//显示比例尺
cbShowRuler.Checked := Boolean(ActiveGpsCtrl.ShowScale);
//显示影像图
cbShowImage.Checked := ActiveGpsCtrl.ShowImage;
//标尺背景色
cbbRulerColorBg.ItemIndex :=
cbbRulerColorBg.Items.IndexOfObject(TObject(GpsManager.RulerBackColor));
//标尺前景色
cbbRulerColorFg.ItemIndex :=
cbbRulerColorFg.Items.IndexOfObject(TObject(GpsManager.RulerForeColor));
//窗口背景色
cbbWinBgColor.ItemIndex :=
cbbWinBgColor.Items.IndexOfObject(TObject(ActiveGpsCtrl.BackColor));
end;
////////////////////////////////////////////////////////////////
// 更换地图
///////////////////////////////////////////////////////////////
procedure TMainForm.cbbMapsChange(Sender: TObject);
var
I: Integer;
AGeoMap: IRTGeoMap;
begin
if ActiveGpsCtrl.CurrentMap.Name = cbbMaps.Items[cbbMaps.ItemIndex] then
Exit;
GpsManager.GeoMaps.Begin_;
for I := 0 to GpsManager.GeoMaps.Count - 1 do
begin
AGeoMap := GpsManager.GeoMaps.GetNext;
if AGeoMap.Name = cbbMaps.Items[cbbMaps.ItemIndex] then
begin
ActiveGpsCtrl.CurrentMap := AGeoMap;
(ActiveMDIChild as TMonitorWin).Caption := AGeoMap.Name;
Break;
end;
end;
end;
/////////////////////////////////////////////////////////////////////////////
// 删除监控窗口
/////////////////////////////////////////////////////////////////////////////
procedure TMainForm.btnRemoveWinClick(Sender: TObject);
begin
if MDIChildCount <= 1 then
Exit;
(**************************************************************)
(* *)
GpsManager.DelGpsWin(
(ActiveMDIChild as TMonitorWin).GpsCtrl.ControlInterface);
(* *)
(**************************************************************)
(ActiveMDIChild as TMonitorWin).Free;
Tile;
end;
//////////////////////////////////////////////////////////////////////////////
// 向下拉列表框添加颜色供用户选择
//////////////////////////////////////////////////////////////////////////////
procedure TMainForm.AddComboBoxColors(Control: TWinControl);
var
AComboBox: TCombobox;
I: Integer;
procedure AddColors(C: TComboBox);
begin
with C.Items do
begin
AddObject('clBlack', TObject(clBlack));
AddObject('clMaroon', TObject(clMaroon));
AddObject('clGreen', TObject(clGreen));
AddObject('clOlive', TObject(clOlive));
AddObject('clNavy', TObject(clNavy));
AddObject('clPurple', TObject(clPurple));
AddObject('clTeal', TObject(clTeal));
AddObject('clGray', TObject(clGray));
AddObject('clSilver', TObject(clSilver));
AddObject('clRed', TObject(clRed));
AddObject('clLime', TObject(clLime));
AddObject('clYellow', TObject(clYellow));
AddObject('clBlue', TObject(clBlue));
AddObject('clFuchsia', TObject(clFuchsia));
AddObject('clAqua', TObject(clAqua));
AddObject('clWhite', TObject(clWhite));
end;
end;
begin
with Control do
begin
for I := 0 to ControlCount - 1 do
begin
if not (Controls[I] is TWinControl) then
Continue;
if (Controls[I] is TComboBox) and (Controls[I] <> cbbMaps)
and (Controls[I] <> cbbCaptionPos) then
begin
AComboBox := TComboBox(Controls[I]);
AComboBox.Style := csOwnerDrawFixed;
AComboBox.OnDrawItem := DrawColorItem;
AddColors(AComboBox);
end else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -