亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
中文字幕免费观看一区| 成人性视频网站| 91免费视频观看| 日韩久久一区二区| av激情成人网| 51精品久久久久久久蜜臀| 亚洲va欧美va人人爽| 欧美体内she精视频| 亚洲电影激情视频网站| 91精品国产乱| 另类欧美日韩国产在线| www国产精品av| 成人高清视频在线观看| 亚洲欧美激情一区二区| 精品视频一区三区九区| 老色鬼精品视频在线观看播放| 欧美videos中文字幕| 国产成人免费视频网站| 亚洲三级小视频| 欧美日韩国产大片| 看国产成人h片视频| 成人午夜视频网站| 日韩欧美国产一区二区三区| 亚洲国产综合91精品麻豆| 欧美浪妇xxxx高跟鞋交| 另类小说一区二区三区| 中文在线一区二区| 在线一区二区三区做爰视频网站| 日韩在线播放一区二区| 久久精品视频在线看| 国产九色sp调教91| 亚洲一区在线观看免费观看电影高清 | 麻豆精品视频在线| 国产日韩av一区二区| 91久久国产最好的精华液| 日本vs亚洲vs韩国一区三区 | 欧美日韩美少妇| 国内精品国产三级国产a久久| 国产69精品久久777的优势| 久久久亚洲精品石原莉奈| 国产亚洲视频系列| 精品视频在线视频| 久久狠狠亚洲综合| 亚洲日本在线看| 欧美精品一区二区久久婷婷| 一本色道久久综合精品竹菊| 久久se精品一区精品二区| 中文字幕av一区二区三区免费看 | 色先锋aa成人| 日本欧美一区二区在线观看| 国产精品麻豆网站| 精品国产三级电影在线观看| 欧美综合色免费| 国产激情视频一区二区在线观看 | 欧美一级午夜免费电影| 制服丝袜一区二区三区| 亚洲一区成人在线| 风间由美一区二区av101 | av高清不卡在线| 久久99国产精品免费| 亚洲一区国产视频| 中文字幕中文字幕一区二区| 精品国产一区二区三区久久久蜜月 | 精品国产青草久久久久福利| 欧美在线高清视频| 99久久精品久久久久久清纯| 国产一区二区三区高清播放| 免费成人av在线| 性久久久久久久久| 亚洲综合免费观看高清完整版在线| 久久日韩粉嫩一区二区三区| 538prom精品视频线放| 99久久精品国产导航| 亚洲欧美日韩国产综合| 久久国产精品72免费观看| 午夜欧美2019年伦理| 欧美日韩黄色影视| 亚洲一区二区av在线| 亚洲国产欧美在线| 国产精品三级视频| 欧美一区二区黄| 91国偷自产一区二区使用方法| 精品一区二区三区在线播放 | 色哟哟欧美精品| 国产成人久久精品77777最新版本| 亚洲国产精品嫩草影院| 欧美主播一区二区三区美女| 国产盗摄女厕一区二区三区 | 91精品国产综合久久精品 | 国产a精品视频| 国产精品久久久一区麻豆最新章节| 色婷婷精品大在线视频| 在线精品视频一区二区三四 | 樱桃国产成人精品视频| 日本乱人伦aⅴ精品| 久久99久久精品| 亚洲国产一二三| 国产精品素人一区二区| 日韩精品一区二| 日韩一级大片在线观看| 欧美日韩一级大片网址| 色系网站成人免费| 91免费在线看| 91在线观看污| 9i在线看片成人免费| 国产suv一区二区三区88区| 99久久免费国产| 精品一区二区三区久久久| 国产乱码一区二区三区| 美女网站在线免费欧美精品| 欧美大片在线观看| 综合久久给合久久狠狠狠97色| 国产精品不卡一区| 午夜a成v人精品| 欧美撒尿777hd撒尿| 国产一区不卡视频| 亚洲国产婷婷综合在线精品| 一区二区在线看| 中日韩av电影| 午夜精品视频一区| |精品福利一区二区三区| 石原莉奈在线亚洲二区| 日韩精品中文字幕在线一区| 中文字幕va一区二区三区| 国产精品私人自拍| 亚洲免费大片在线观看| 亚洲国产精品久久久久秋霞影院| 亚洲国产欧美在线| 美腿丝袜在线亚洲一区| 国产老女人精品毛片久久| 成人一二三区视频| 国产不卡高清在线观看视频| 日本亚洲最大的色成网站www| 久久99精品国产麻豆婷婷洗澡| 国产成人综合视频| 一本久道久久综合中文字幕 | 欧美一区二区三区公司| 欧美三级欧美一级| 亚洲欧洲日韩一区二区三区| 色天天综合色天天久久| 欧洲精品中文字幕| 色欧美片视频在线观看在线视频| 日本乱人伦一区| 91精品在线一区二区| 精品国产伦理网| 亚洲欧美日韩小说| 日韩精品色哟哟| 懂色av一区二区夜夜嗨| 欧美性生活久久| 亚洲精品在线观看视频| 国产亚洲女人久久久久毛片| 亚洲免费观看高清完整版在线观看| 欧美一区二区三区在线观看| 国产日产欧美一区二区视频| 亚洲线精品一区二区三区八戒| 日韩精品一二三| 韩国精品一区二区| 国产激情一区二区三区| 欧美日韩大陆一区二区| 中文字幕不卡三区| 国产成人av资源| 欧美日产国产精品| 视频一区在线视频| 91啦中文在线观看| 久久精品一级爱片| 日韩欧美一级二级| 亚洲成人7777| 久久久久久免费毛片精品| 91成人免费网站| 在线免费亚洲电影| 中文字幕在线观看不卡| 亚洲成人午夜电影| 亚洲国产精品久久人人爱| 蜜臀久久久久久久| 欧美视频在线一区二区三区| 国产欧美日韩综合精品一区二区| 五月天视频一区| 亚洲综合丁香婷婷六月香| 国产又黄又大久久| 欧美精品一二三四| 久久精品欧美日韩| av在线免费不卡| 国产婷婷色一区二区三区在线| 强制捆绑调教一区二区| 欧美巨大另类极品videosbest | 久久成人免费电影| 欧美偷拍一区二区| 国精产品一区一区三区mba桃花| 91蜜桃网址入口| 欧美日韩精品欧美日韩精品| 欧美激情艳妇裸体舞| 极品少妇xxxx精品少妇| 欧美浪妇xxxx高跟鞋交| 亚洲另类色综合网站| 午夜精品爽啪视频| 欧美日韩亚洲国产综合| 亚洲男同性恋视频| 亚洲国产另类av| 蜜桃视频一区二区三区在线观看| 欧美色综合天天久久综合精品|