?? unitmainform.~pas
字號:
begin
MyGIS.GMapTools.m_Map.DoMouseMove(Sender, Shift, X, Y);
MyGIS.GMapTools.m_Map.ToMapPoint(X, Y, m_x, m_y);
SBar.Panels[5].Text:=FormatFloat('#0.######', m_x);
SBar.Panels[7].Text:=FormatFloat('#0.######', m_y);
end;
procedure TForm_Main.MapXObject1ToolUsed(ASender: TObject; ToolNum: Smallint;
X1, Y1, X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
begin
if ToolNum=miTextTool then ShowMessage('asdf');
MyGIS.GMapTools.m_Map.DoToolUsed(ASender, ToolNum, X1, Y1, X2, Y2,
Distance, Shift, Ctrl, EnableDefault);
end;
procedure TForm_Main.MapXObject1DblClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.DoDblClick(Sender);
end;
procedure TForm_Main.NZoomInClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miZoomInTool);
end;
procedure TForm_Main.NZoomOutClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miZoomOutTool);
end;
procedure TForm_Main.NPanClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miPanTool);
end;
procedure TForm_Main.NClickSelectClick(Sender: TObject);
begin
PointSelectTool:=TPointSelectTool(SetCurrentMapTool('TPointSelectTool', DoOnTurnTool));
MyGIS.GMapTools.MapX.EndDrag(False);
if PointSelectTool<>nil then
PointSelectTool.OnFeatureDblClick:=DoOnFeatureDblClick;
end;
procedure TForm_Main.NRectSelectClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miRectSelectTool);
MyGIS.GMapTools.MapX.EndDrag(False);
end;
procedure TForm_Main.NPolySelectClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miPolygonSelectTool);
MyGIS.GMapTools.MapX.EndDrag(False);
end;
procedure TForm_Main.NRadiusSelectClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miRadiusSelectTool);
MyGIS.GMapTools.MapX.EndDrag(False);
end;
procedure TForm_Main.NSymbolClick(Sender: TObject);
begin
CheckEditLayer;
SetCurrentMapTool('TAddSymbolMapTool', DoOnTurnTool);
end;
procedure TForm_Main.NTextClick(Sender: TObject);
begin
CheckEditLayer;
SetCurrentMapTool('TAddTextMapTool', DoOnTurnTool);
end;
procedure TForm_Main.NRectClick(Sender: TObject);
begin
CheckEditLayer;
SetCurrentMapTool('TAddRectangleMapTool', DoOnTurnTool);
end;
procedure TForm_Main.NDistanceClick(Sender: TObject);
var
Index:Integer;
begin
Index:=MyGIS.GMapTools.m_Map.UserTools.IndexByClassName('TRulerMapTool');
with TRulerMapTool(MyGIS.GMapTools.m_Map.UserTools.Items[Index]) do
begin
MyGIS.GMapTools.m_Layer.Layer:=EditLayer;
MsgHandle:=Self.Handle;
end;
MyGIS.GMapTools.m_Map.UserTools.SetCurrentTool('TRulerMapTool');
end;
procedure TForm_Main.NLoadLayerClick(Sender: TObject);
var
i:Integer;
FileMapper:string;
aLyr:Layer;
ANode:TTreeNode;
begin
if SysTreeRoot=nil then
begin
MyInformation('錯誤', '圖層組不存在!');
Exit;
end;
OpenDialog1.Filter:='*.TAB|*.TAB';
if OpenDialog1.Execute then
begin
FileMapper := OpenDialog1.FileName;
if SysTreeRoot.Count=0 then
for i:=0 to OpenDialog1.Files.Count-1 do
begin
aLyr:=MyGIS.GMapTools.m_Layers.CreateLayerFromFile(
ExtractFileNameNoExt(OpenDialog1.Files[i]),
OpenDialog1.Files[i],
i+1, True);
AddLayerNode(tvLayers, SysTreeRoot, naAddChild, -1,
aLyr.Name, OpenDialog1.Files[i],
False, 2, -1, 3);
end
else
begin
ANode:=SysTreeRoot.Item[0];
for i:=0 to OpenDialog1.Files.Count-1 do
begin
aLyr:=MyGIS.GMapTools.m_Layers.CreateLayerFromFile(
ExtractFileNameNoExt(OpenDialog1.Files[i]),
OpenDialog1.Files[i],
i+1, True);
AddLayerNode(tvLayers, ANode, naInsert, -1,
aLyr.Name, OpenDialog1.Files[i],
False, 2, -1, 3);
end;
end;
FrmEagleEye.InitLayers(True);
SysTreeRoot.Expand(False);
if Frame_Search1<>nil then
Frame_Search1.LoadLayers;
end;
end;
procedure TForm_Main.NClearLayersClick(Sender: TObject);
begin
if SysTreeRoot=nil then
begin
MyInformation('錯誤', '圖層組不存在!');
Exit;
end;
if YHB_Confirmation('只有用戶圖層可以被移出,是否移出所有用戶圖層?') then
begin
RemoveUserLayers;
if Frame_Search1<>nil then
Frame_Search1.LoadLayers;
end;
end;
procedure TForm_Main.NMergeClick(Sender: TObject);
var
Cancel:Boolean;
Ft:Feature;
Fts:Features;
begin
CheckEditLayer;
MyGIS.DoBeginAction(ID_ACTION_COMBINE, Cancel);
if Cancel then Exit;
Fts:=EditLayer.Selection.Clone;
if not CanCombine(Fts) then
begin
if CanRegionToLine(Fts) then
NToLine.OnClick(NToLine)
else begin
MyDefInformation('圖形種類不一致,無法合并!');
Exit;
end;
end;
with MyGIS.GMapTools.m_Layer do
begin
BeforeDeleteFeature:=DoBeforeDeleteFeature;
OnFeatureCreate:=DoOnFeatureCreate;
Layer:=EditLayer;
Ft:=CombineSelectedShapes;
end;
MyGIS.DoEndAction(ID_ACTION_COMBINE);
end;
procedure TForm_Main.NLineClick(Sender: TObject);
begin
SetCurrentMapTool('TAddLineMapTool', DoOnTurnTool);
end;
procedure TForm_Main.FormShow(Sender: TObject);
begin
//DebugLog.Show;
//增加業務菜單//
MyGIS.LoadBusinessMenuItems(NBOperators);
DebugLog.Add('DB500TS-C', ['創建業務菜單成功']);
//GIS實例對象進一步注冊自己的單選命令//
MyGIS.RegisterCmdCtrlGroups;
DebugLog.Add('DB500TS-C', ['注冊擴展命令執行者成功']);
//初始化樹//
InitGISTree;
DebugLog.Add('DB500TS-C', ['初始化圖層樹成功']);
//工程實例初始化//
MyGIS.LoadProject;
DebugLog.Add('DB500TS-C', ['加載工程實例成功']);
//查詢窗口加載圖層//
if Frame_Search1<>nil then
begin
Frame_Search1.LoadLayers;
DebugLog.Add('DB500TS-C', ['查詢窗口配置完成']);
end;
//初始化鷹眼窗口//
InitEyeForm;
DebugLog.Add('DB500TS-C', ['鷹眼窗口配置完成']);
end;
procedure TForm_Main.MapXObject1MapViewChanged(Sender: TObject);
begin
FrmEagleEye.OperMap:=MyGIS.GMapTools.MapX;
FrmEagleEye.SetMapViewChanged;
end;
procedure TForm_Main.NCenterClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miCenterTool);
end;
procedure TForm_Main.NPolyClick(Sender: TObject);
begin
SetCurrentMapTool('TAddRegionMapTool', DoOnTurnTool);
end;
procedure TForm_Main.WMMapToolsEvent(var Message: TMessage);
var
aBaseTool:TBaseMapTool;
aRulerTool:TRulerMapTool;
begin
if RichEdit_UserMsg=nil then Exit;
if pcControl.ActivePage<>tsMessage then
pcControl.ActivePageIndex:=1;
aBaseTool:=MyGIS.GMapTools.m_Map.UserTools.CurrentToolObject;
if aBaseTool is TRulerMapTool then
begin
aRulerTool:=TRulerMapTool(aBaseTool);
RichEdit_UserMsg.Lines.Add('距離:'+FloatToStr(aRulerTool.Distance));
end
else
RichEdit_UserMsg.Lines.Add('消息:'+aBaseTool.MsgString);
end;
procedure TForm_Main.NModeFeatureClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.FeatureEditMode:=emFeature;
if not MyGIS.GMapTools.m_Map.InSelectMode then
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miSelectTool);
end;
procedure TForm_Main.NModeNodeClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.FeatureEditMode:=emNode;
if not MyGIS.GMapTools.m_Map.InSelectMode then
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miSelectTool);
end;
procedure TForm_Main.NModeAddNodeClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.FeatureEditMode:=emNode;
if not MyGIS.GMapTools.m_Map.InSelectMode then
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miSelectTool);
end;
procedure TForm_Main.NSelectAllClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SelectAll;
end;
procedure TForm_Main.NClearSelectClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.ClearSelection;
end;
procedure TForm_Main.MapXObject1SelectionChanged(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.DoSelectionChanged(Sender);
//刷新數據窗口//
RefreshSelectionRecords;
//刷新制圖窗口,首先置制圖窗口為無編輯圖形狀態,如果EditLayer不為空,則增加選擇圖形到制圖窗口//
if Frame_DrawShape1<>nil then
Frame_DrawShape1.SelectionChanged;
end;
procedure TForm_Main.NPLineClick(Sender: TObject);
begin
SetCurrentMapTool('TAddPLineMapTool', DoOnTurnTool);
end;
procedure TForm_Main.NCircleClick(Sender: TObject);
begin
CheckEditLayer;
SetCurrentMapTool('TAddCircleMapTool', DoOnTurnTool);
end;
procedure TForm_Main.NLabelClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.SysTools.SetCurrentTool(miLabelTool);
end;
procedure TForm_Main.NToolBarClick(Sender: TObject);
begin
// 查看工具欄
NToolBar.Checked := Not NToolBar.Checked;
CoolBar1.Visible := NToolBar.Checked;
end;
procedure TForm_Main.NStatusBarClick(Sender: TObject);
begin
// 查看狀態欄
NStatusBar.Checked := Not NStatusBar.Checked;
SBar.Visible := NStatusBar.Checked;
end;
procedure TForm_Main.NGlobalMapClick(Sender: TObject);
begin
MyGIS.GMapTools.m_Map.ViewGlobalMap;
end;
procedure TForm_Main.NNavigationClick(Sender: TObject);
var
pt:TPoint;
cx, cy:Integer;
w, h:Integer;
begin
pt:=MyGIS.GMapTools.MapX.ClientToScreen(Classes.Point(0, 0));
cx:=pt.x+MyGIS.GMapTools.MapX.Width div 2;
cy:=pt.y+MyGIS.GMapTools.MapX.Height div 2;
w:=FrmNavigation.Width;
h:=FrmNavigation.Height;
FrmNavigation.SetBounds(cx-w div 2, cy-h div 2, w, h);
FrmNavigation.OnNavigate:=DoOnNavigate;
FrmNavigation.Visible:=not FrmNavigation.Visible;
end;
procedure TForm_Main.DoOnNavigate(Sender: TObject; Direction: Integer);
begin
case Direction of
DIRECTION_STOP:begin
end;
DIRECTION_UP:begin
MyGIS.GMapTools.MapX.CenterY:=MyGIS.GMapTools.MapX.CenterY+0.1;
end;
DIRECTION_DOWN:begin
MyGIS.GMapTools.MapX.CenterY:=MyGIS.GMapTools.MapX.CenterY-0.1;
end;
DIRECTION_LEFT:begin
MyGIS.GMapTools.MapX.CenterX:=MyGIS.GMapTools.MapX.CenterX-0.1;
end;
DIRECTION_RIGHT:begin
MyGIS.GMapTools.MapX.CenterX:=MyGIS.GMapTools.MapX.CenterX+0.1;
end;
DIRECTION_WHOLE:begin
MyGIS.GMapTools.MapX.Bounds := MyGIS.GMapTools.MapX.Layers.Bounds;
end;
end;
end;
procedure TForm_Main.NInvertSelectClick(Sender: TObject);
begin
with MyGIS.GMapTools.m_Layer do
begin
Layer:=EditLayer;
InvertSelection;
end;
end;
procedure TForm_Main.NDeleteClick(Sender: TObject);
begin
CheckEditLayer;
// MyGIS.DoBeforeDelete;
with MyGIS.GMapTools.m_Layer do
begin
Layer:=EditLayer;
DeleteSelectedFeatures;
end;
end;
procedure TForm_Main.NClearClick(Sender: TObject);
begin
CheckEditLayer;
with MyGIS.GMapTools.m_Layer do
begin
BeforeDeleteFeature:=DoBeforeDeleteFeature;
OnFeatureCreate:=DoOnFeatureCreate;
Layer:=EditLayer;
DeleteAllFeatures;
end;
end;
procedure TForm_Main.NArcClick(Sender: TObject);
begin
CheckEditLayer;
SetCurrentMapTool('TAddArcMapTool', DoOnTurnTool);
end;
procedure TForm_Main.MapXObject1DrawUserLayer(ASender: TObject;
const Layer: IDispatch; hOutputDC, hAttributeDC: Cardinal;
const RectFull, RectInvalid: IDispatch);
begin
//繪制用戶圖層中的圖形//
MyGIS.GMapTools.m_Map.DoDrawUserLayer(ASender, Layer, hOutputDC,
hAttributeDC, RectFull, RectInvalid);
end;
procedure TForm_Main.RegisterCmdCtrlItems;
begin
{增加單選類工具}
with CmdToolGroups.Add(gtRadio,'RadioMapTools') do
begin
Add(miPanTool, NPan, [TBtnmiPanTool, PNPan]);
Add(miZoomInTool, NZoomIn, [TBtnCUSTOM_ZOOMIN_TOOL, PNZoomIn]);
Add(miZoomOutTool, NZoomOut, [TBtnCUSTOM_ZOOMOUT_TOOL, PNZoomOut]);
Add(miCenterTool, NCenter, [TBtnmiCenterTool, PNCenter]);
Add(miSelectTool, NClickSelect, [TBtnSelectTool]);
Add(miRectSelectTool, NRectSelect, [TBtnRectSelectTool]);
Add(miPolygonSelectTool, NPolySelect, [TBtnPolygonSelectTool]);
Add(miRadiusSelectTool, NRadiusSelect, [TBtnRadiusSelectTool]);
Add(miSymbolTool, NSymbol, [TBtnCUSTOM_SYMBOL_TOOL], DoCanExecute_CreateShape);
Add(miAddLineTool, NLine, [TBtnCUSTOM_LINE_TOOL], DoCanExecute_CreateShape);
Add(miAddPolylineTool, NPLine, [TBtnCUSTOM_POLYLINE_TOOL], DoCanExecute_CreateShape);
Add(0, NRect, [TBtnCUSTOM_RECTANGLE_TOOL], DoCanExecute_CreateShape);
Add(0, NCircle, [TBtnCUSTOM_CIRCULARREGION_TOOL], DoCanExecute_CreateShape);
Add(0, NEllipse, [TBtnCUSTOM_ELLIPSE_TOOL], DoCanExecute_CreateShape);
Add(miAddRegionTool, NPoly, [TBtnCUSTOM_REGION_TOOL], DoCanExecute_CreateShape);
Add(0, NArc, [TBtnCUSTOM_ARC_TOOL], DoCanExecute_CreateShape);
Add(miTextTool, NText, [TBtnCUSTOM_TEXT_TOOL], DoCanExecute_CreateShape);
Add(miLabelTool, NLabel, [TBtnCUSTOM_LABEL_TOOL]);
Add(0, NBreakLine, [TBtnBreakLine], DoCanExecute_EditShape);
end;
{增加復選類工具}
with CmdToolGroups.Add(gtCheck,'CheckItems') do
begin
Add(0, NNavigation, [TBtnNavigation, PNNavigation]);
Add(0, NShowEagleEye, [TBtnShowEagleEye, PNShowEagleEye]);
end;
{增加一般工具}
with CmdToolGroups.Add(gtCustom,'Custom') do
begin
Add(0, NGlobalMap, [TBtnGlobalMap, PNGlobalMap]);
Add(0, NClearSelect, [TBtnClearSelTool]);
Add(0, NRemoveLayer, [PNRemoveLayer]);
Add(0, NNewLayer, [PNNewLayer1, PNNewLayer2]);
Add(0, NLoadLayer, [PNLoadLayer1, PNLoadLayer2]);
Add(0, NClearLayers, [PNClearLayers]);
Add(0, NLayerOptions, [PNLayerOptions3]);
Add(0, NAddToProject, [PNAddToProject]);
Add(0, NCopyLayer, [PNCopyLayer]);
Add(0, NCopy, [TBtnCopy]);
Add(0, NCut, [TBtnCut]);
Add(0, NPaste, [TBtnPaste]);
Add(0, NMerge, [TBtnMerge]);
Add(0, NBreak, [TBtnBreak]);
Add(0, NAlignRight, [TBtnAlignRight]);
Add(0, NAlignHCenter, [TBtnAlignHCenter]);
Add(0, NAlignTop, [TBtnAlignTop]);
Add(0, NAlignBottom, [TBtnAlignBottom]);
Add(0, NAlignVCenter, [TBtnAlignVCenter]);
Add(0, NToRegion, [TBtnToRegon]);
Add(0, NToLine, [TBtnToLine]);
Add(0, NClipWithRect, [TBtnClipWithRect]);
end;
end;
procedure TForm_Main.NExportAsImageClick(Sender: TObject);
var
cfgStruct:TMapImageConfig;
begin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -