📄 frm_mainbase.pas
字号:
unit frm_MainBase;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Base_ListView, OleCtrls, MapXLib_TLB, ExtCtrls,
Base_Panel, Buttons, ToolWin, Menus, ImgList, ActnList,cls_LayerControl,cls_MapClass,
StdCtrls, Base_BitBtn, Base_ComboBox, Base_StaticText, Base_LabeledEdit,adodb,
Base_DateTimePicker;
type
TForm_MainBase = class(TForm)
Menu_Main: TMainMenu;
N8: TMenuItem;
N9: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N30: TMenuItem;
al_Main: TActionList;
Action_Select: TAction;
Action_ZoomIn: TAction;
Action_ZoomOut: TAction;
Action_Pan: TAction;
Action_Center: TAction;
Action_Ruler: TAction;
Action_label: TAction;
Action_Radius: TAction;
Action_Rect: TAction;
Action_PolyGen: TAction;
Action_CancelTool: TAction;
Action_ExtendTool: TAction;
il_main: TImageList;
pm_Map: TPopupMenu;
TB_Main: TToolBar;
pnl_Left: TBase_Panel;
Splitter1: TSplitter;
Base_Panel1: TBase_Panel;
pan_Detail: TBase_Panel;
Base_Panel3: TBase_Panel;
Map_main: TMap;
Base_Panel4: TBase_Panel;
Base_Panel5: TBase_Panel;
Splitter3: TSplitter;
Map_GuidMap: TMap;
Base_Panel6: TBase_Panel;
stb_main: TStatusBar;
N67: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
Base_Panel7: TBase_Panel;
lab_Resource: TBase_StaticText;
cb_RelateSource: TBase_ComboBox;
bbtn_Show: TBase_BitBtn;
N10: TMenuItem;
il_Tool: TImageList;
Base_Panel8: TBase_Panel;
Splitter4: TSplitter;
Base_Panel9: TBase_Panel;
pc_Tree: TPageControl;
TabSheet_Layer: TTabSheet;
tv_Layer: TTreeView;
TabSheet1: TTabSheet;
tv_Guide: TTreeView;
Base_Panel11: TBase_Panel;
txt_Condition: TBase_LabeledEdit;
btn_Select: TBase_BitBtn;
lv_Result: TBase_ListView;
N34: TMenuItem;
Action_Edit: TAction;
Action_Locate: TAction;
Timer1: TTimer;
Timer2: TTimer;
Splitter5: TSplitter;
COMPANY: TBase_BitBtn;
PermanentPopu: TBase_BitBtn;
StayPopu: TBase_BitBtn;
CASERECORD: TBase_BitBtn;
WORKOBJECT: TBase_BitBtn;
DOORPLATE: TBase_BitBtn;
cb_Condition: TBase_ComboBox;
Base_StaticText1: TBase_StaticText;
Base_StaticText2: TBase_StaticText;
dp_Condition: TBase_DateTimePicker;
procedure FormCreate(Sender: TObject);
procedure Action_SelectExecute(Sender: TObject);
procedure Action_ZoomInExecute(Sender: TObject);
procedure Action_ZoomOutExecute(Sender: TObject);
procedure Action_PanExecute(Sender: TObject);
procedure Action_CenterExecute(Sender: TObject);
procedure Action_RulerExecute(Sender: TObject);
procedure Action_labelExecute(Sender: TObject);
procedure Action_RadiusExecute(Sender: TObject);
procedure Action_RectExecute(Sender: TObject);
procedure Action_PolyGenExecute(Sender: TObject);
procedure Action_CancelToolExecute(Sender: TObject);
procedure Action_ExtendToolExecute(Sender: TObject);
procedure Map_mainToolUsed(ASender: TObject; ToolNum: Smallint; X1, Y1,
X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
procedure Map_mainMapViewChanged(Sender: TObject);
procedure Map_GuidMapToolUsed(ASender: TObject; ToolNum: Smallint; X1,
Y1, X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
procedure SpeedButton1Click(Sender: TObject);
procedure Map_mainSelectionChanged(Sender: TObject);
//procedure lv_PropertyDblClick(Sender: TObject);
procedure Map_mainPolyToolUsed(ASender: TObject; ToolNum: Smallint;
Flags: Integer; const Points: IDispatch; bShift, bCtrl: WordBool;
var EnableDefault: WordBool);
procedure Map_mainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btn_SelectClick(Sender: TObject);
procedure Action_EditExecute(Sender: TObject);
procedure Action_LocateExecute(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure lv_ResultClick(Sender: TObject);
procedure tv_LayerClick(Sender: TObject);
procedure cb_ConditionChange(Sender: TObject);
procedure dp_ConditionChange(Sender: TObject);
private
{ Private declarations }
miMine:integer; //0:正常选择地图;数据挖掘时选择地图
mMineForm:TForm; //挖掘窗体
PreviousTool:Integer; //挖掘前的工具
miDataBaseIndex:integer; //要挖掘的数据库序号
m_Guid_Feature:CMapXFeature; // 定义一个图元用来存放导航图中的一个方框用来表示主MAPX图的视野
m_Guid_Layer:CMapxLayer; // 导航图中的一个临时图层(不用空间数据表进行存放),用来存放上一行表示的方框
MapControl:TMapControl;
MapClass:TMapClass;
blnToolUsed:Boolean;
msArrType:array of string;
m_MapX:double; //
m_MapY:double;
m_distance:double;
m_PointsNum:integer;
m_ShowTableName:string;
procedure bitShowClick(Sender: TObject);
public
{ Public declarations }
adoCriminalQue:TADOQuery;
tempFtrs:CMapXFeatures;
msArrLayerName:array of string; //数据挖掘的层名
msLayerName:string; //数据挖掘时显示属性的层名
mArrFeatures:array of CMapXFeatures; //数据挖掘返回的图元集
procedure iDataMining(iDataBaseIndex:array of integer;iToolNum:integer;sMineForm:TForm;iMine:integer);
end;
const
CreateRectSel=300; // 为导航图自定义的一个工具指定一个常量值
var
Form_MainBase: TForm_MainBase;
implementation
uses frm_Basic, frmSystemDM, cls_DataPub, cls_GridListView;
{$R *.dfm}
procedure TForm_MainBase.FormCreate(Sender: TObject);
begin
//创建Map控制类
MapControl:=TMapControl.Create(Map_main,Map_GuidMap,tv_Layer,tv_Guide,'sys_LayerControl',lv_Result,cb_RelateSource,bbtn_Show);
MapClass:=TMapClass.Create(Map_main);
MapControl.FillLayerTree;
MapControl.FillGuideTree;
MapControl.LoadLayer;
MapControl.LoadOneDataBaseLayer(1,0);
Map_GuidMap.CreateCustomTool(CreateRectSel, miToolTypeMarquee , miRectSelectCursor, miSizeCursor,miSizeCursor, EmptyParam);
Map_GuidMap.CurrentTool:=CreateRectSel;
m_Guid_Layer:=Map_GuidMap.Layers.CreateLayer('rectlayer',EmptyParam,EmptyParam,EmptyParam,EmptyParam);
//Map_GuidMap.bounds:=Map_GuidMap.Layers['STREET'].Bounds;
Map_GuidMap.Refresh;
COMPANY.OnClick:=bitShowClick;
DOORPLATE.OnClick:=bitShowClick;
PermanentPopu.OnClick:=bitShowClick;
StayPopu.OnClick:=bitShowClick;
CASERECORD.OnClick:=bitShowClick;
WORKOBJECT.OnClick:=bitShowClick;
end;
procedure TForm_MainBase.Action_SelectExecute(Sender: TObject);
begin
MapClass.SelectByPtn;
end;
procedure TForm_MainBase.Action_ZoomInExecute(Sender: TObject);
begin
MapClass.ZoomInTool;
end;
procedure TForm_MainBase.Action_ZoomOutExecute(Sender: TObject);
begin
MapClass.ZoomOutTool;
end;
procedure TForm_MainBase.Action_PanExecute(Sender: TObject);
begin
MapClass.PanTool;
end;
procedure TForm_MainBase.Action_CenterExecute(Sender: TObject);
begin
MapClass.CenterTool;
end;
procedure TForm_MainBase.Action_RulerExecute(Sender: TObject);
begin
MapClass.RulerTool;
end;
procedure TForm_MainBase.Action_labelExecute(Sender: TObject);
begin
MapClass.LabelTool;
end;
procedure TForm_MainBase.Action_RadiusExecute(Sender: TObject);
begin
MapClass.RadiusSelectTool;
end;
procedure TForm_MainBase.Action_RectExecute(Sender: TObject);
begin
MapClass.RectSelectTool;
end;
procedure TForm_MainBase.Action_PolyGenExecute(Sender: TObject);
begin
MapClass.PolygonSelectTool;
end;
procedure TForm_MainBase.Action_CancelToolExecute(Sender: TObject);
begin
MapClass.CancelSelectTool;
end;
procedure TForm_MainBase.Action_ExtendToolExecute(Sender: TObject);
begin
MapClass.ExtendTool;
end;
procedure TForm_MainBase.Map_mainToolUsed(ASender: TObject;
ToolNum: Smallint; X1, Y1, X2, Y2, Distance: Double; Shift,
Ctrl: WordBool; var EnableDefault: WordBool);
{var
sSpaceName: string;
pNode: pMapInfo;
Point : CMapXPoint;
I: Integer;
arrCaption :array[0..3] of String;
sArrLayerName:array of string;
iLoop,jLoop,kLoop:integer;
tempMapInfo:pMapInfo;}
begin
blnToolUsed:=True;
{try
if miMine=0 then //非数据挖掘
begin
case ToolNum of
miSelectTool: //点选择
begin
sSpaceName:=MapControl.sGetTvSelectSpace;
if (sSpaceName<>'') and Map_main.Layers.Item[sSpaceName].Selectable then
begin
Map_main.Layers.Item[sSpaceName].Selection.SelectByPoint(X1,Y1,miSelectionNew,miSearchResultDefault);
if Map_main.Layers.Item[sSpaceName].Selection.Count <> 0 then
begin
MapControl.SetKeyBySelect(sSpaceName);
end;
end;
end;
miRectSelectTool: //矩形选
begin
sSpaceName:=MapControl.sGetTvSelectSpace;
if (sSpaceName<>'') and Map_main.Layers.Item[sSpaceName].Selectable then
begin
Map_main.Layers.Item[sSpaceName].Selection.SelectByRectangle(X1,Y1,X2,Y2,miSelectionNew);
if Map_main.Layers.Item[sSpaceName].Selection.Count <> 0 then
begin
MapControl.SetKeyBySelect(sSpaceName);
end;
end;
end;
miRadiusSelectTool: //圆形选择
begin
sSpaceName:=MapControl.sGetTvSelectSpace;
if (sSpaceName<>'') and Map_main.Layers.Item[sSpaceName].Selectable then
begin
Map_main.Layers.Item[sSpaceName].Selection.SelectByRadius(X1,Y1,Distance,miSelectionNew);
if Map_main.Layers.Item[sSpaceName].Selection.Count <> 0 then
begin
MapControl.SetKeyBySelect(sSpaceName);
end;
end;
end;
end;
end
else if miMine= 1 then //数据挖掘
begin
case ToolNum of
miSelectTool: //点选择
begin
for iLoop:= 1 to Map_main.Layers.Count do
begin
if Map_main.Layers[iLoop].Selectable=true then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -