亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
99久久精品费精品国产一区二区| 欧美电影免费观看完整版| 色94色欧美sute亚洲线路一ni| 欧美日本视频在线| 国产精品不卡在线| 久久99国产精品久久99果冻传媒| 日本久久一区二区| 国产丝袜美腿一区二区三区| 五月激情综合色| 色综合一个色综合亚洲| 精品国产乱码久久久久久1区2区| 夜夜嗨av一区二区三区中文字幕| 国产99久久久国产精品免费看| 欧美精品九九99久久| 亚洲综合色在线| 99精品视频在线观看| 国产丝袜美腿一区二区三区| 极品美女销魂一区二区三区 | 久久综合色播五月| 日韩专区一卡二卡| 欧美亚日韩国产aⅴ精品中极品| 国产精品伦理在线| 国产成人精品亚洲午夜麻豆| 精品少妇一区二区三区视频免付费| 亚洲国产成人tv| 欧美午夜精品一区| 亚洲综合色网站| 欧美网站大全在线观看| 一区二区久久久久| 91在线播放网址| 亚洲精品免费播放| 在线观看日韩国产| 亚洲综合激情小说| 精品视频一区 二区 三区| 亚洲午夜在线电影| 欧美一级在线免费| 老色鬼精品视频在线观看播放| 91精品国产欧美一区二区18| 欧美男男青年gay1069videost| 亚洲视频一区在线| 成人av电影在线播放| 国产精品每日更新| 91免费视频网址| 亚洲午夜av在线| 制服丝袜亚洲播放| 精品一区二区三区视频| 久久精品一区八戒影视| 成人av在线电影| 一区二区免费在线播放| 91精品国产综合久久香蕉麻豆| 天天综合日日夜夜精品| 日韩免费一区二区| 久久精品国产一区二区| 欧洲一区二区三区免费视频| 日日噜噜夜夜狠狠视频欧美人 | 日韩综合小视频| 欧美bbbbb| 不卡免费追剧大全电视剧网站| 欧美性xxxxxx少妇| 久久精品人人做| 极品瑜伽女神91| 欧美日韩国产在线观看| 日韩久久免费av| 91成人国产精品| 在线观看视频欧美| 欧美日本乱大交xxxxx| 国产精品免费视频观看| 亚洲成人午夜电影| 26uuu国产电影一区二区| 久久美女高清视频| 欧美在线高清视频| 成人一级片网址| 国产免费成人在线视频| 国产一区在线观看麻豆| 欧美在线观看视频在线| 国产v综合v亚洲欧| 日本va欧美va欧美va精品| 国产精品二区一区二区aⅴ污介绍| 国产福利91精品一区| 不卡视频一二三四| 国产精品乱人伦一区二区| 韩日欧美一区二区三区| 久久国产三级精品| 日本乱码高清不卡字幕| 欧美日韩一区不卡| 亚洲国产精品一区二区www| 伦理电影国产精品| 91免费精品国自产拍在线不卡| 国产精品一区二区在线观看不卡| 色综合久久中文字幕| 国产欧美日韩综合| 偷偷要91色婷婷| 欧美视频一区二区在线观看| 亚洲精品一区二区三区福利| 久久er99精品| 欧美精品 国产精品| 全国精品久久少妇| 中文字幕av在线一区二区三区| 亚洲乱码国产乱码精品精98午夜 | 成人免费视频caoporn| 精品人在线二区三区| 日韩成人精品在线| 中文字幕精品在线不卡| 99re热视频这里只精品| 久久se精品一区二区| 亚洲欧美韩国综合色| 久久久综合视频| 91精品蜜臀在线一区尤物| 欧美亚洲一区三区| 成人91在线观看| 国产一区亚洲一区| 亚洲v精品v日韩v欧美v专区| 国产精品欧美久久久久一区二区| 91在线播放网址| 亚洲综合一二三区| 亚洲精品一区二区三区福利 | 欧美在线影院一区二区| 亚洲精品国产一区二区精华液| 欧美在线不卡一区| 国产成人午夜电影网| 天堂影院一区二区| 一区二区三区91| 亚洲三级视频在线观看| 日韩免费高清电影| 欧美精品乱码久久久久久按摩| 成人av动漫网站| 91亚洲国产成人精品一区二三| 一区二区三区中文在线| 捆绑变态av一区二区三区| 伊人一区二区三区| 日韩美女视频19| 日本一区二区成人| 欧美电影一区二区三区| 色婷婷精品大视频在线蜜桃视频| 成人午夜视频在线观看| 欧美三级在线看| 天天色综合天天| 国产欧美日韩在线看| 亚洲九九爱视频| 亚洲第一激情av| 七七婷婷婷婷精品国产| 国产盗摄一区二区| 一本大道久久a久久精二百| 欧美男人的天堂一二区| 日韩午夜在线观看视频| 久久久国产精品麻豆| 亚洲欧美成人一区二区三区| 日韩av一区二区在线影视| 国产一区二区三区四| 色综合久久天天综合网| 91精品婷婷国产综合久久| 久久精品视频免费| 亚洲一区二区三区四区五区黄| 韩国精品主播一区二区在线观看 | 欧美精品乱人伦久久久久久| 久久综合久久综合九色| 亚洲精品乱码久久久久久日本蜜臀| 日韩成人免费电影| 91丝袜美腿高跟国产极品老师 | 国产精品久久久久一区 | 国产丶欧美丶日本不卡视频| 欧美色图免费看| 精品国精品国产| 亚洲最新在线观看| 国产自产视频一区二区三区| 在线精品视频一区二区三四| 久久精品一区八戒影视| 日本va欧美va欧美va精品| 91日韩在线专区| 久久精品网站免费观看| 视频一区二区三区在线| 99久久精品免费精品国产| 日韩美一区二区三区| 亚洲综合免费观看高清完整版 | 亚洲va在线va天堂| 豆国产96在线|亚洲| 日韩视频永久免费| 亚洲福利一区二区三区| 不卡的av电影在线观看| 日韩欧美在线不卡| 日韩1区2区日韩1区2区| 欧美综合久久久| 成人欧美一区二区三区视频网页| 精品一区二区三区久久久| 制服.丝袜.亚洲.中文.综合| 一区二区免费视频| 99精品偷自拍| 国产精品久久久久四虎| 国产精品1024久久| 久久综合狠狠综合久久综合88 | 午夜av一区二区| 色先锋资源久久综合| 中文字幕制服丝袜一区二区三区| 韩国毛片一区二区三区| 精品国产制服丝袜高跟| 国产在线一区观看| 久久综合99re88久久爱| 国产自产视频一区二区三区| 久久久久久99久久久精品网站| 久久精品久久精品|