⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frm_mainbase.~pas

📁 用Delhpi和mapx开发的警务管理系统
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
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 + -