亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mapxcontainer.pas

?? 此代碼是關于mapgis的在
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit MapXContainer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, MapXLib_TLB, Math, DB, ADODB, MapXBase,
  MapXStyles, MapXConsts, StoreManager, DBTools;



const
  PROC_MOUSEDOWN        = 1;
  PROC_MOUSEMOVE        = 2;
  PROC_MOUSEUP          = 3;
  PROC_TOOLUSED         = 4;
  PROC_DBLCLICK         = 5;
  PROC_SELECTIONCHANGED = 6;
  PROC_DRAWUSERLAYER    = 7;

const
  EditorName      = 'TextEditor';
  EditorMinWidth  = 50;
  ErrorSingleLine = '本次操作只能選擇一條折線!';

const
  UNION_FEATURE_NONE       = 0;
  UNION_FEATURE_ALL        = 1;
  UNION_FEATURE_SELECTED   = 2;
  UNION_FEATURE_QUERY      = 3;
  
type
  TMapXSelectionDeleted=procedure (ASender:TObject;
    EditLayer:CMapXLayer) of object;

  TFeatureClass=class;
  
  TMapManager=class;

  TFeatureEditMode=(emFeature,
                    emNode,
                    emMoveDuplicateNodes,
                    emDeleteDuplicateNodes,
                    emEditModeAddNode);

  TMapManager=class
  private
    FAddFeatureToolUsedEventProces:TObjectMethodList;
    FAnnotationAddedEventProces:TObjectMethodList;
    FAnnotationChangedEventProces:TObjectMethodList;
    FClickEventProces:TObjectMethodList;
    FDataMismatchEventProces:TObjectMethodList;
    FDblClickEventProces:TObjectMethodList;

    FDrawUserLayerEventProces:TObjectMethodList; 
    FMouseDownEventProces:TObjectMethodList;
    FMouseMoveEventProces:TObjectMethodList;
    FMouseUpEventProces:TObjectMethodList;
    FMouseWheelEventProces:TObjectMethodList;
    FRequestDataEventProces:TObjectMethodList;
    FResolveDataBindEventProces:TObjectMethodList;
    FResolveDataBindExEventProces:TObjectMethodList;
    FSelectionChangedEventProces:TObjectMethodList;
    FStartDragEventProces:TObjectMethodList;
    FThemeModifyRequestedEventProces:TObjectMethodList;

    FToolUsedEventProces:TObjectMethodList;
    FSelectionDeletedEventProces:TObjectMethodList;

    FSysTools: TToolList;
    FUserTools: TToolList;
    FMapX: TMapXObject;
    FUserStyles: TStyleInfoList;
    FAnimateLayer: CMapXLayer;
    FSysStyles: TStyleInfoList;
    function TypeIdToListInstance(const TypeId:Integer):TObjectMethodList;
    function GetFeatureEditMode: TFeatureEditMode;
    procedure SetFeatureEditMode(const Value: TFeatureEditMode);
  public
    //-------------------------------------------------------------------//
    {復制的圖形}
    CopyFts:Features;
    //-------------------------------------------------------------------//
    constructor Create;
    destructor Destroy;override;
    //-------------------------------------------------------------------//
    procedure DoAddFeatureToolUsed(ASender: TObject;
      ToolNum: Smallint; Flags: Integer; const Feature: IDispatch; bShift,
      bCtrl: WordBool; var EnableDefault: WordBool);
    procedure DoAnnotationAdded(ASender: TObject;
      const Annotation: IDispatch);
    procedure DoAnnotationChanged(ASender: TObject;
      ChangeType: Smallint; const Annotation: IDispatch;
      var EnableDefault: WordBool);
    procedure DoClick(Sender: TObject);
    procedure DoDataMismatch(ASender: TObject;
      const DataSetName: WideString; Row: Integer;
      var GeoFieldValue: WideString);
    procedure DoDblClick(Sender: TObject);
    //還有14個事件沒有處理//
    procedure DoDrawUserLayer(ASender: TObject;
      const Layer: IDispatch; hOutputDC, hAttributeDC: Cardinal;
      const RectFull, RectInvalid: IDispatch);
    procedure DoMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DoMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DoMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DoMouseWheel(ASender: TObject; Flags: Integer;
      zDelta: Smallint; var X, Y: Single; var EnableDefault: WordBool);
    procedure DoRequestData(ASender: TObject;
      const DataSetName: WideString; Row: Integer; Field: Smallint;
      var Value: OleVariant; var Done: WordBool);
    procedure DoResolveDataBind(ASender: TObject; Flag,
      NumMatches: Smallint; Matches: OleVariant; var Choice: Smallint;
      var Cancel: WordBool);
    procedure DoResolveDataBindEx(ASender: TObject; Flag,
      NumMatches: Smallint; Matches: OleVariant; var Choice: Smallint;
      var Cancel: WordBool);
    procedure DoSelectionChanged(Sender: TObject);
    procedure DoStartDrag(Sender: TObject;
      var DragObject: TDragObject);
    procedure DoThemeModifyRequested(ASender: TObject;
      const Theme: IDispatch);
    procedure DoToolUsed(ASender: TObject; ToolNum: Smallint; X1,
      Y1, X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
      var EnableDefault: WordBool);
    procedure DoBeforeSelectionDeleted(ASender: TObject; EditLayer:CMapXLayer);
    //-------------------------------------------------------------------//
    {轉換為地圖上的坐標}
    procedure ToMapPoint(const vX, vY:Integer; var mX, mY:Double);
    {轉換為視圖上的坐標}
    procedure ToViewPoint(const mX, mY:Double; var vX, vY:Integer);
    {轉換為地圖上的長度}
    function ToMapLength(const Len:Integer):Double;
    {轉換為屏幕上的長度}
    //-------------------------------------------------------------------//
    {注冊方法}
    procedure RegisterEventProc(Obj:TObject; const P:Pointer;
      const TypeId:Integer);
    {取消方法注冊}
    procedure UnRegisterEventProc(Obj:TObject; const P:Pointer;
      const TypeId:Integer);
    //-------------------------------------------------------------------//
    {用Style索引號取得Style接口對象}
    function GetStyleByUserId(UserId:Integer):Style;
    {清空剪貼板}
    procedure ClearClipboard;
    {從GeoDataSet加載}
    procedure LoadMapFromGeoset(const FileName:string);
    {保存為GeoDataSet}
    procedure SaveMapAsGeoset(const FileName:string);
    {保存為圖象格式}
    procedure SaveMapAsImage(ImageCfg:TMapImageConfig);
    {是否處于選擇狀態}
    function InSelectMode:Boolean;
    {取得單一選擇圖層}
    function GetSingleSelectedLayer:CMapXLayer;
    {取得工具對象}
    function GetToolObjectByToolId(const aToolId:Integer):TBaseMapTool;
    {取得當前工具對象}
    function GetCurrentToolObject:TBaseMapTool;
    //-------------------------------------------------------------------//
    {縮放到圖層外接矩形}
    procedure ViewLayerMap(aLayer:CMapXLayer);
    {縮放到圖層類}
    procedure ViewFeatureClass(AGroup:TFeatureClass);
    {全部顯示}
    procedure ViewGlobalMap;
    {縮放到前圖}
    procedure ViewBeforeMap;
    {縮放到初始圖}
    procedure ViewInitMap;
    //-------------------------------------------------------------------//
    procedure SelectAll;
    procedure ClearSelection;
    procedure InvertSelection;
    //-------------------------------------------------------------------//
    function GetFirstSelectLayer:CMapXLayer;
    function Copy:Boolean;
    //-------------------------------------------------------------------//
    property MapX:TMapXObject read FMapX write FMapX;
    {系統動態圖層}
    property AnimateLayer:CMapXLayer read FAnimateLayer write FAnimateLayer;
    {系統工具列表}
    property SysTools:TToolList read FSysTools;
    {用戶工具列表}
    property UserTools:TToolList read FUserTools;
    {用戶Style列表}
    property UserStyles:TStyleInfoList read FUserStyles;
    {系統Style列表}
    property SysStyles:TStyleInfoList read FSysStyles;
    {圖形編輯模式}
    property FeatureEditMode:TFeatureEditMode read GetFeatureEditMode write SetFeatureEditMode;
  end;

  TMapBlock = class
    procedure SaveToStream(Stream:TStream);
    procedure LoadFromStream(Stream:TStream);
  end;

  TMapBlockList = class
  private
    FList:TList;
    function GetItemCount:Integer;
    function GetItem(Index:Integer):TMapBlock;
  public
    constructor Create;
    destructor Destroy;override;
    procedure Add(Value:TMapBlock);overload;
    function Add:TMapBlock;overload;
    procedure Insert(const Index:Integer;Value:TMapBlock);overload;
    function Insert(const Index:Integer):TMapBlock;overload;
    procedure Delete(const Index:Integer);
    procedure Clear;
    procedure LoadFromStream(Stream:TStream);
    procedure SaveToStream(Stream:TStream);
    property ItemCount:Integer read GetItemCount;
    property Items[Index:Integer]:TMapBlock read GetItem;
  end;
  {該類用于保存系統圖層的連接信息}
  TMapLinkInfo = class
  private
    FLayer: CMapXLayer;
    FLayerName: string;
    FCaption: string;
  public
    procedure SaveToStream(Stream:TStream);
    procedure LoadFromStream(Stream:TStream);
    {圖層名稱}
    property LayerName:string read FLayerName write FLayerName;
    {標題}
    property Caption:string read FCaption write FCaption;
    {圖層對象}
    property Layer:CMapXLayer read FLayer write FLayer;
  end;
  {該類用于保存系統圖層列表信息}
  TMapLinkInfoList = class
  private
    FList:TList;
    function GetItemCount:Integer;
    function GetItem(Index:Integer):TMapLinkInfo;
  public
    constructor Create;
    destructor Destroy;override;
    procedure Add(Value:TMapLinkInfo);overload;
    function Add:TMapLinkInfo;overload;
    procedure Insert(const Index:Integer;Value:TMapLinkInfo);overload;
    function Insert(const Index:Integer):TMapLinkInfo;overload;
    procedure Delete(const Index:Integer);
    procedure Clear;
    procedure LoadFromStream(Stream:TStream);
    procedure SaveToStream(Stream:TStream);
    property ItemCount:Integer read GetItemCount;
    property Items[Index:Integer]:TMapLinkInfo read GetItem;
  end;
  {用戶圖形類:例如:公路、鐵路、汽車、房屋等}
  TBusinessFeature = class
  private
    FFeatureName: string;
    FFeatureType: TShapeType;
    FStyleId: Integer;
  public
    procedure LoadFromStream(Stream:TStream);
    procedure SaveToStream(Stream:TStream);
    property FeatureName:string read FFeatureName write FFeatureName;
    property FeatureType:TShapeType read FFeatureType write FFeatureType;
    property StyleId:Integer read FStyleId write FStyleId;
  end;

  TBusinessFeatureList = class
  private
    FList:TList;
    function GetItemCount:Integer;
    function GetItem(Index:Integer):TBusinessFeature;
  public
    constructor Create;
    destructor Destroy;override;
    procedure Add(Value:TBusinessFeature);overload;
    function Add:TBusinessFeature;overload;
    procedure Insert(const Index:Integer;Value:TBusinessFeature);overload;
    function Insert(const Index:Integer):TBusinessFeature;overload;
    procedure Delete(const Index:Integer);
    procedure Clear;
    procedure LoadFromStream(Stream:TStream);
    procedure SaveToStream(Stream:TStream);
    property ItemCount:Integer read GetItemCount;
    property Items[Index:Integer]:TBusinessFeature read GetItem;
  end;

  TLayerConfigInfo=class
  private
    FLayerName: string;
    FTableName: string;
    FFeatureClassId: Integer;
    FFields: TMapFieldList;
    FFeatureListCanChanged: Boolean;
    FTableStructCanChanged: Boolean;
    FFeatureList: TBusinessFeatureList;
    FParams: TStrings;
    FIsSystem: Boolean;
  public
    constructor Create;
    destructor Destroy;override;
    {圖層名稱}
    property LayerName:string read FLayerName write FLayerName;
    {商業表名稱}
    property TableName:string read FTableName write FTableName;
    {圖形類編號,圖形類是給一組具有相同業務屬性的圖層進行的歸類}
    property FeatureClassId:Integer read FFeatureClassId write FFeatureClassId;
    {表結構是否可以變化}
    property TableStructCanChanged:Boolean read FTableStructCanChanged write FTableStructCanChanged;
    {字段列表,如果圖形類允許異構表結構,則可以修改,否則不可以修改}
    property Fields:TMapFieldList read FFields;
    {支持的商業圖形列表是否可以修改}
    property FeatureListCanChanged:Boolean read FFeatureListCanChanged write FFeatureListCanChanged;
    {支持的商業圖形類型,如果圖層類允許變動商業圖形列表,則可以修改,否則不可以修改}
    property FeatureList:TBusinessFeatureList read FFeatureList;
    {圖層參數}
    property Params:TStrings read FParams;
    {是否為系統圖層}
    property IsSystem:Boolean read FIsSystem write FIsSystem;
  end;

  TLayerManager=class;
  
  TMapFeatureStoreManager=class(TStoreManager)
  private
    FFt: Feature;
    FStoreManager: TStoreManager;
    FFtType: Integer;
    FLayerManager: TLayerManager;
    FFontStyle: TFontStyleInfo;
    FLineStyle: TLineStyleInfo;
    FRegionStyle: TRegionStyleInfo;
    FSymBmpStyle: TSymbolBitmapStyleInfo;
    FSymFontStyle: TSymbolFontStyleInfo;
    FSymVertorStyle: TSymbolVectorSytleInfo;
    FFeatureStyle: CMapXStyle;
    procedure CreateRegionFromStream(Stream:TStream);
    procedure CreateLineFromStream(Stream:TStream);
    procedure CreateSymbolFromStream(Stream:TStream);
    procedure CreateTextFromStream(Stream:TStream);
    procedure CreateMultiPointFromStream(Stream:TStream);
    procedure SaveRegionToStream(Stream:TStream);
    procedure SaveLineToStream(Stream:TStream);
    procedure SaveSymbolToStream(Stream:TStream);
    procedure SaveTextToStream(Stream:TStream);
    procedure SaveMultiPointToStream(Stream:TStream);
    procedure SetFt(const Value: Feature);
  public
    constructor Create;
    destructor Destroy; override;
    procedure SaveToStream(Stream:TStream); override;
    procedure LoadFromStream(Stream:TStream); override;
    property Ft:Feature read FFt write SetFt;
    property FtType:Integer read FFtType write FFtType;
    property LayerManager: TLayerManager read FLayerManager write FLayerManager;
    property StoreManager: TStoreManager read FStoreManager;
  end;
  //圖形事件//
  TMapXFeatureEvent=procedure (Sender:TObject; ActionId:Integer;
    Ft:Feature) of object;
  //圖形集合事件//
  TMapXFeaturesEvent=procedure (Sender:TObject; ActionId:Integer;
    Fts:Features) of object;
  //選擇集合事件//
  TMapXSelectionEvent=procedure (Sender:TObject; Sel:Selection) of object;
  //圖形被刪除前事件//
  TBeforeDeleteMapXFeature=procedure (Sender:TObject; Ft:Feature;
    ActionId:Integer; var Cancel:Boolean) of object;
  //標簽位置//
  TLabelPosition=(lpCC, lpTL, lpTC,
                  lpTR, lpCL, lpCR,
                  lpBL, lpC,  lpBR);
  
  TLayerManager=class
  private
    FLayer: CMapXLayer;
    FMapManager: TMapManager;
    FOnCtrlPropDialog: TMapXFeatureEvent;
    FOnFeatureCreate: TMapXFeatureEvent;
    FBeforeDeleteFeature: TBeforeDeleteMapXFeature;
    function GetLabelPosition: TLabelPosition;
    procedure SetLabelPosition(const Value: TLabelPosition);
    function GetLabelStyle: Style;
    function GetMapX: TMapXObject;
    procedure ConfigParts(Dest, Source: CMapXParts);
  public
    constructor Create;
    destructor Destroy;override;
    //----------------------------------------------------------------------//
    {取得Style的COM對象}
    function GetStyleComObject(mstyle:OleVariant):Style;
    {用Style索引號取得Style接口對象}
    function GetStyleByUserId(UserId:Integer):Style;
    {設置圖層的標注文本樣式}
    procedure SetLabelStyle(AFontStyle:TFontStyleInfo);
    //----------------------------------------------------------------------//
    {增加圖形}
    function AddFeature(ft:Feature; Rvs:OleVariant;
      ActionId:Integer):Feature;
    {增加點對象}
    function AddSymbol(const x, y: Double; mstyle:OleVariant;
      const Standalone:Boolean; ActionId:Integer):feature;
    {增加多點對象}
    function AddMultiPoint(Points:TMapPointList; mstyle:OleVariant;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人在线观看视频| 成人av午夜影院| 成人国产精品免费观看| 精品第一国产综合精品aⅴ| 国产精品久久久久一区二区三区 | 色综合激情五月| 日本韩国视频一区二区| 国产精品影音先锋| 婷婷久久综合九色综合伊人色| 欧美激情在线一区二区| 亚洲综合清纯丝袜自拍| 日韩美女在线视频 | 日本韩国欧美三级| 国产v日产∨综合v精品视频| 宅男在线国产精品| 婷婷综合在线观看| 日韩三级电影网址| 蜜臂av日日欢夜夜爽一区| 日韩精品影音先锋| 狠狠狠色丁香婷婷综合久久五月| 欧美精品1区2区3区| 天天综合网天天综合色| 91精品国产欧美一区二区| 美腿丝袜亚洲色图| 亚洲精品一区二区三区精华液 | 亚洲天堂a在线| 色94色欧美sute亚洲线路二| 亚洲一区二区视频在线观看| 日本韩国欧美在线| 无吗不卡中文字幕| 亚洲精品一区二区三区蜜桃下载| 国产iv一区二区三区| 中文字幕一区二区三区蜜月| 91丨九色丨蝌蚪丨老版| 亚洲综合一区二区三区| 日韩亚洲欧美综合| 懂色中文一区二区在线播放| 亚洲美女少妇撒尿| 欧美一区二区三区小说| 国产在线精品免费av| 国产精品国产三级国产普通话99 | 久久久综合精品| 9l国产精品久久久久麻豆| 亚洲一区国产视频| 久久伊人中文字幕| 色妞www精品视频| 日韩成人一级大片| 亚洲欧洲精品一区二区三区不卡| 欧美日韩亚洲综合一区| 国产一区二区三区四| 亚洲综合色网站| 久久日韩粉嫩一区二区三区| 在线免费观看视频一区| 久久国产夜色精品鲁鲁99| 亚洲激情中文1区| 26uuu成人网一区二区三区| 高清beeg欧美| 一区二区三区国产精华| 日韩欧美一区二区在线视频| 99精品久久99久久久久| 午夜在线成人av| 亚洲色图制服诱惑| 欧美tickling挠脚心丨vk| 欧美亚洲自拍偷拍| 成人午夜精品在线| 美国十次综合导航| 亚洲一区二区免费视频| 国产精品看片你懂得| 久久亚洲综合色| 91精品国产91久久久久久一区二区 | 正在播放一区二区| 91在线一区二区三区| 精品一区二区三区影院在线午夜| 亚洲精品日韩综合观看成人91| 久久综合久久99| 欧美久久久久久久久中文字幕| 国产**成人网毛片九色| 秋霞国产午夜精品免费视频| 亚洲一区免费在线观看| 亚洲欧美日韩一区| 中文无字幕一区二区三区| 日韩精品一区二区在线观看| 欧美日韩三级一区| 欧美亚洲综合另类| 色婷婷综合久久久| 972aa.com艺术欧美| 成人动漫一区二区三区| 国产成人av电影在线| 精品亚洲aⅴ乱码一区二区三区| 日日欢夜夜爽一区| 亚洲综合色视频| 亚洲成人动漫精品| 中文字幕色av一区二区三区| 国产精品久久三| 国产色产综合产在线视频| 日韩一区二区三免费高清| 欧美视频在线不卡| 在线观看日韩国产| 成人久久18免费网站麻豆| 不卡高清视频专区| 色综合久久天天| 欧美午夜免费电影| 欧美一区二区福利视频| 精品久久久影院| 久久久一区二区三区捆绑**| 久久精品一区四区| 国产精品国产自产拍在线| 17c精品麻豆一区二区免费| 亚洲免费毛片网站| 一区二区成人在线视频 | 91精品国产欧美一区二区成人| 91国在线观看| 欧美一区二区国产| 久久久国产精品不卡| 成人欧美一区二区三区1314| 亚洲精品视频免费看| 日韩精品乱码av一区二区| 精品一区二区久久久| av成人免费在线观看| 色呦呦一区二区三区| 色天天综合久久久久综合片| 欧美日韩一区二区欧美激情| xnxx国产精品| 亚洲品质自拍视频网站| 日韩精品久久久久久| 国产91精品久久久久久久网曝门 | 91女人视频在线观看| 欧美色大人视频| 久久伊99综合婷婷久久伊| 亚洲欧美综合色| 日韩精品一级二级| 成人一级视频在线观看| 欧美色大人视频| 国产丝袜在线精品| 亚洲午夜在线观看视频在线| 亚洲电影中文字幕在线观看| 国产在线麻豆精品观看| 国产精品一区二区三区乱码| 97久久超碰国产精品电影| 777奇米四色成人影色区| 欧美激情艳妇裸体舞| 视频一区在线播放| 成人免费视频免费观看| 在线播放中文字幕一区| 国产欧美精品一区| 日韩av一区二区在线影视| 99久久免费视频.com| 日韩欧美成人激情| 亚洲一区二区三区三| 国产福利视频一区二区三区| 欧美日韩电影一区| 亚洲欧洲99久久| 日韩av在线发布| 国产一区二区三区四区在线观看| 欧美羞羞免费网站| 日韩欧美在线影院| 午夜电影网亚洲视频| 成人禁用看黄a在线| 日韩免费观看高清完整版在线观看| 亚洲欧美视频在线观看| 国产精品自在欧美一区| 91精品国产乱| 午夜精品久久久久久久久| av在线不卡观看免费观看| 日韩免费视频一区| 天天色 色综合| 欧美色涩在线第一页| 一区二区三区四区av| jlzzjlzz亚洲日本少妇| 日本一区二区免费在线观看视频| 日韩黄色一级片| 日韩欧美在线影院| 国产一区二区三区香蕉| 国产精品美女一区二区三区| 成人午夜在线免费| 亚洲三级在线看| 欧美日本一道本| 久久91精品国产91久久小草| 国产偷v国产偷v亚洲高清| 成人av先锋影音| 亚洲一线二线三线视频| 91精品婷婷国产综合久久性色| 秋霞国产午夜精品免费视频| www国产成人免费观看视频 深夜成人网| 国精品**一区二区三区在线蜜桃| 337p日本欧洲亚洲大胆色噜噜| 大胆欧美人体老妇| 亚洲精品久久嫩草网站秘色| 7777精品伊人久久久大香线蕉完整版 | 首页国产欧美日韩丝袜| 日韩精品一区二| 成人免费视频caoporn| 亚洲精品一二三| 欧美日韩免费在线视频| 久久精品99国产精品日本| 国内精品不卡在线| 国产精品久久久久aaaa| 欧美色图在线观看| 国产综合成人久久大片91| 亚洲码国产岛国毛片在线|