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

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

?? unitshellapis.~pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, MapXLib_TLB,
  ComCtrls, MapXBase, UnitAppTypes, UnitProject, UnitGISShell;

function CreateAppProject(AOwner:TComponent; MapX:TMapXObject):TGISProject;
{創建GIS工程對象}
function CreateGISProject(GISClass:TGISProjectClass; AOwner:TComponent;
  MapX:TMapXObject):TGISProject;
{放開節點}
procedure LayerTreeDragDrop(Sender, Source: TObject; X,
  Y: Integer);
{拖動節點}
procedure LayerTreeDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
{初始化樹}
procedure InitGISTree;
{清除圖層樹附帶的信息}
procedure ClearLayerTreeInfo(ATreeView:TTreeView);
{清除某一節點下的附帶的信息}
procedure ClearSubNodesInfo(ANode:TTreeNode);
{刪除節點}
procedure DeleteNode(ANode:TTreeNode);
{強行創建Web地圖路徑}
function ForceCreateWebMapPath:string;
{增加圖層節點}
function AddLayerNode(ATreeView:TTreeView; APNode:TTreeNode;
  Mode:TNodeAttachMode; const Id:Integer; const LayerName,
  FileName:string; IsSystem:Boolean; const DataFrom:Smallint;
  const FtClassType, ImageIndex:Integer):TTreeNode;
{查找圖層節點}
function FindLayerNode(const LayerIndex:Integer):TTreeNode; overload;
function FindLayerNode(ALyr:Layer):TTreeNode; overload;
function GetLayerData(ALyr:Layer):TLayerTreeNodeRecord;
{查找圖形類節點}
function FindFeatureClassNode(const FCId:Integer):TTreeNode;
{查找圖層}
function GetLayer(const FtClassType:Integer; var LayerNode:TTreeNode): CMapXLayer;
{移動圖層節點}
procedure MoveLayer(MapX:TMapXObject; const FromIndex, ToIndex:Integer);
{設置圖層節點可見性}
procedure SetLayerVisible(MapX:TMapXObject; const Index:Integer; const Visible:Boolean);
{設置圖層節點可編輯性}
procedure SetLayerEditable(MapX:TMapXObject; const Index:Integer; const Editable:Boolean);
{設置圖層節點可選性}
procedure SetLayerSelectable(MapX:TMapXObject; const Index:Integer; const Selectable:Boolean);
{設置圖層節點自動標注屬性}
procedure SetLayerAutoLabel(MapX:TMapXObject; SysTreeRoot:TTreeNode;
  const Index:Integer; const AutoLabel:Boolean);
{移出指定圖層}
procedure RemoveuserLayer(MapX:TMapXObject; const Index: Integer);
{清除所有圖層}
procedure RemoveAllNodes;
{設置AddObjectTool}
function SetCurrentMapTool(const ToolClassName:string;
  TurnEvent:TNotifyEvent):TBaseMapTool;
{設置一般工具}
{檢查編輯圖層}
procedure CheckEditLayer;
{圖層字段類型轉換為邏輯類型}
function MapFieldTypeToLogicalFieldName(AFieldType:TMapFieldType):string;
{邏輯類型轉換為圖層字段類型}
function LogicalFieldNameToMapFieldType(const FieldName:string):TMapFieldType;
{取得圖形類型名稱}
function GetShapeTypeName(AShapeType:TShapeType):string;
{用名稱取得圖形類型}
function GetShapeTypeByName(const TypeName:string):TShapeType;
{從節點取得圖層}
function GetLayerFromTreeNode(ANode:TTreeNode):Layer;
{是否為一般圖層}
function IsCustomLayer(Lyr:Layer):Boolean;
function GetCustomLayerIndex(MapX:TMapXObject; const ComboIndex:Integer):Integer;
function GetCustomLayerComboIndex(MapX:TMapXObject; const LayerIndex:Integer):Integer;
{生成Bounds字符串}
function GetBoundsString(Bounds:CMapXRectangle):string;
{從Bounds字符串設置Bounds}
function CreateBoundsUseBoundsString(const BoundsStr:string):CMapXRectangle;

implementation

uses
  WinControl, BusinessDialogs, StringOperations, MapXAPIs, MapXTools,
  UnitLocalGISProject, UnitAppConsts;

function CreateAppProject(AOwner:TComponent; MapX:TMapXObject):TGISProject;
begin
  if MyGISClass=nil then
    MyGISClass:=TLocalGISProject;
  Result:=CreateGISProject(MyGISClass, AOwner, MapX);
end;

function CreateGISProject(GISClass:TGISProjectClass; AOwner:TComponent;
  MapX:TMapXObject):TGISProject;
begin
  Result:=TGISProject(GISClass.NewInstance);
  Result.Create(AOwner, MapX);
end;

function AddLayerNode(ATreeView:TTreeView; APNode:TTreeNode;
  Mode:TNodeAttachMode; const Id:Integer; const LayerName,
  FileName:string; IsSystem:Boolean; const DataFrom:Smallint;
  const FtClassType, ImageIndex:Integer):TTreeNode;
var
  aLayerItem:TTreeNode;
  aLayerInfo:TLayerTreeNodeRecord;
begin
  Result:=nil;
  case Mode of
    naAdd             : aLayerItem:=ATreeView.Items.Add(APNode, LayerName);
    naAddFirst        : aLayerItem:=ATreeView.Items.AddFirst(APNode, LayerName);
    naAddChild        : aLayerItem:=ATreeView.Items.AddChild(APNode, LayerName);
    naAddChildFirst   : aLayerItem:=ATreeView.Items.AddChildFirst(APNode, LayerName);
    naInsert          : aLayerItem:=ATreeView.Items.Insert(APNode, LayerName);
    else                Exit;
  end;
  aLayerItem.ImageIndex:=ImageIndex;
  aLayerItem.SelectedIndex:=ImageIndex;
  aLayerItem.StateIndex:=TREENODESTATE_SUBCHECKEDALL;
  aLayerInfo:=TLayerTreeNodeRecord.Create;
  aLayerItem.Data:=aLayerInfo;
  aLayerInfo.NodeType:=LTN_LAYER;
  aLayerInfo.Id:=Id;
  aLayerInfo.Name:=LayerName;
  aLayerInfo.FtClassType:=FtClassType;
  aLayerInfo.IsSystem:=IsSystem;
  aLayerInfo.DataFrom:=DataFrom;
  aLayerInfo.FileName:=FileName;
  Result:=aLayerItem;
end;

procedure LayerTreeDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  TreeViewDragDrop(Sender, Source, X, Y, DragType);
end;

procedure LayerTreeDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  TreeViewDragOver(Sender, Source, X, Y, State, Accept);
end;

procedure InitGISTree;
begin
  SysTreeRoot:=SysTree.Items.AddChild(nil, '所有圖層');
  SysTreeRoot.ImageIndex:=0;
  SysTreeRoot.SelectedIndex:=0;
  SysTreeRoot.StateIndex:=TREENODESTATE_SUBCHECKEDALL;
end;

procedure ClearLayerTreeInfo(ATreeView:TTreeView);
var
  i:Integer;
  AItem:TTreeNode;
begin
  for i:=1 to ATreeView.Items.Count-1 do
  begin
    AItem:=ATreeView.Items[i];
    if AItem.Data<>nil then
      TLayerTreeNodeRecord(AItem.Data).Free;
  end;
end;

procedure ClearSubNodesInfo(ANode:TTreeNode);
var
  i:Integer;
  AItem:TTreeNode;
begin
  for i:=0 to ANode.Count-1 do
  begin
    AItem:=ANode.Item[i];
    if AItem.Data<>nil then
      TLayerTreeNodeRecord(AItem.Data).Free;
    ClearSubNodesInfo(AItem);
  end;
end;

procedure DeleteNode(ANode:TTreeNode);
begin
  TLayerTreeNodeRecord(ANode.Data).Free;
  ANode.Free;
end;

function GetSystemDirectory(var S: String): Boolean;
var
  Len: Integer;
begin
  Result:=False;
  Len := Windows.GetSystemDirectory(nil, 0);
  if Len > 0 then
  begin
    SetLength(S, Len);
    Windows.GetSystemDirectory(PChar(S), Len);
    Result:=True;
  end;
end;

function ForceCreateWebMapPath:string;
var
  SysPath, MyPath:string;
begin
  if not GetSystemDirectory(SysPath) then
  begin
    Result:='';
    Exit;
  end;
  Result:=SysPath[1]+':\QxWebMap\';
  if not DirectoryExists(Result) then
    ForceDirectories(Result);
  MyPath:=Result+'Maps';
  if not DirectoryExists(MyPath) then
    ForceDirectories(MyPath);
  MyPath:=Result+'SymbolBitmaps';
  if not DirectoryExists(MyPath) then
    ForceDirectories(MyPath);
end;

function FindLayerNode(const LayerIndex: Integer): TTreeNode;

  function FindNodeInChildren(const Index:Integer;
    ANode:TTreeNode; var PriorIndex:Integer):TTreeNode;
  var
    i:Integer;
  begin
    Result:=nil;
    for i:=0 to ANode.Count-1 do
    begin
      if TLayerTreeNodeRecord(ANode.Item[i].Data).NodeType=LTN_LAYER then
      begin
        Inc(PriorIndex);
        if PriorIndex=Index then
        begin
          Result:=ANode.Item[i];
          Exit;
        end;
      end
      else
        Result:=FindNodeInChildren(Index, ANode.Item[i], PriorIndex);
    end;
  end;
  
var
  Index:Integer;
  PriorIndex:Integer;
begin
  PriorIndex:=-1;
  //取得在顯示給用戶的圖層列表中的序號//
  Index:=GetCustomLayerComboIndex(MyGIS.GMapTools.MapX, LayerIndex);
  //根據顯示給用戶的圖層列表中的序號,查找節點//
  Result:=FindNodeInChildren(Index, SysTreeRoot, PriorIndex);
end;

function FindLayerNode(ALyr:Layer):TTreeNode;
var
  LayerIndex:Integer;
begin
  LayerIndex:=MyGIS.GMapTools.m_Layers.IndexByLayer(ALyr);
  Result:=FindLayerNode(LayerIndex);
end;

function GetLayerData(ALyr:Layer):TLayerTreeNodeRecord;    
var
  ANode:TTreeNode;
begin
  Result:=nil;
  ANode:=FindLayerNode(ALyr);
  if ANode<>nil then
    Result:=TLayerTreeNodeRecord(ANode.Data);
end;

function FindFeatureClassNode(const FCId:Integer):TTreeNode;
//var
//  i:Integer;
begin
{  for i:=0 to SysTreeRoot.Count-1 do
  begin
    if TLayerTreeNodeRecord(ANode.Item[i].Data)^.NodeType=LTN_LAYER then
    begin
      Inc(PriorIndex);
      if PriorIndex=Index then
      begin
        Result:=ANode.Item[i];
        Exit;
      end;
    end
    else
      Result:=FindNodeInChildren(Index, ANode.Item[i], PriorIndex);
  end;  }
end;

function GetLayer(const FtClassType:Integer; var LayerNode:TTreeNode): CMapXLayer;
var
  i:Integer;
  ANode:TTreeNode;
begin
  Result:=nil;
  LayerNode:=nil;
  for i:=1 to MyGIS.GMapTools.MapX.Layers.Count do
  begin
    ANode:=FindLayerNode(i);
    if ANode<>nil then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区专区| 亚洲成人av资源| 日韩精品资源二区在线| 欧美亚洲国产一区在线观看网站| 成人app在线| 不卡的电影网站| 91丝袜美腿高跟国产极品老师| 国产成人精品一区二区三区网站观看| 国内精品久久久久影院色| 久久av中文字幕片| 国产精品一区二区三区四区| 91精品国产综合久久久久久久久久| 亚洲国产高清在线| 色哟哟精品一区| 国产成人免费视频网站| 国产黄色成人av| av中文字幕一区| 91美女视频网站| 欧美日韩国产小视频在线观看| 欧美理论在线播放| 91精品国产乱| 久久久精品免费观看| 中文字幕+乱码+中文字幕一区| 中文字幕一区av| 亚洲精品视频在线| 日日摸夜夜添夜夜添国产精品| 久久疯狂做爰流白浆xx| 国产成人在线视频播放| 日本精品裸体写真集在线观看| 欧美日韩一二三区| 日韩美一区二区三区| 国产欧美精品一区二区色综合朱莉| 亚洲国产精品成人久久综合一区| 日韩美女视频一区二区| 亚洲国产精品影院| 国产资源在线一区| 91老师国产黑色丝袜在线| 8x8x8国产精品| 中文字幕免费一区| 亚洲高清免费在线| 国产不卡视频在线观看| 欧洲精品一区二区| 久久九九99视频| 香蕉av福利精品导航| 成人激情午夜影院| 欧美一级免费观看| 亚洲私人黄色宅男| 狠狠色丁香久久婷婷综| 色999日韩国产欧美一区二区| 日韩视频在线观看一区二区| 中文字幕在线不卡国产视频| 蜜桃视频一区二区三区在线观看| 99久久精品免费看国产免费软件| 欧美一级欧美三级在线观看| 亚洲人精品午夜| 国产一区二区在线观看免费| 91超碰这里只有精品国产| 亚洲欧洲av另类| 国产伦精品一区二区三区免费 | 国产欧美一区二区三区鸳鸯浴| 亚洲婷婷国产精品电影人久久| 激情成人综合网| 欧美日韩日日骚| 亚洲国产精品久久艾草纯爱| 91性感美女视频| 国产精品久线观看视频| 国产一区二区三区四| 日韩免费福利电影在线观看| 日本不卡中文字幕| 欧美自拍偷拍一区| 国产精品免费视频网站| 国产一区二区三区四区五区美女| 欧美成人国产一区二区| 日韩电影一区二区三区四区| 欧美区在线观看| 午夜精品久久久久久久99樱桃| 91免费看视频| 亚洲精品国产视频| 色婷婷精品大在线视频| 亚洲美女淫视频| 欧美综合视频在线观看| 一区二区三区在线观看国产| 色噜噜狠狠成人中文综合| 中文字幕中文乱码欧美一区二区| 成人免费电影视频| 成人欧美一区二区三区视频网页| 成人免费视频app| 国产精品国产三级国产| av在线一区二区三区| 亚洲人快播电影网| 欧美专区亚洲专区| 视频一区欧美精品| 日韩欧美自拍偷拍| 国产自产2019最新不卡| 欧美国产一区二区在线观看| 99在线精品观看| 一区二区三区欧美日韩| 欧美日韩小视频| 九九九精品视频| 欧美激情中文不卡| av电影天堂一区二区在线观看| 亚洲视频你懂的| 69久久99精品久久久久婷婷 | 亚洲欧美日韩中文播放 | 欧美精品一区二| 从欧美一区二区三区| 亚洲女同ⅹxx女同tv| 欧美日韩一区二区三区在线 | 99r国产精品| 亚洲国产成人精品视频| 日韩精品一区二区三区老鸭窝| 国产精品一区二区久激情瑜伽 | 欧美日韩免费电影| 精品中文av资源站在线观看| 国产精品久久看| 4438x亚洲最大成人网| 国产一区二区不卡老阿姨| 亚洲日本免费电影| 欧美变态tickling挠脚心| eeuss鲁一区二区三区| 免费在线欧美视频| 1区2区3区欧美| 欧美大白屁股肥臀xxxxxx| 福利视频网站一区二区三区| 亚洲成人免费观看| 久久综合色鬼综合色| 欧美网站大全在线观看| 黑人巨大精品欧美黑白配亚洲| **性色生活片久久毛片| 精品理论电影在线| 欧美日韩在线观看一区二区| 高清不卡一二三区| 蜜桃视频在线观看一区| 亚洲高清视频中文字幕| 亚洲欧美偷拍卡通变态| 国产亚洲精品久| 欧美精品一区二区三区视频| 欧美日韩aaaaaa| 在线一区二区三区四区五区| 99国产精品99久久久久久| 国产精品一二一区| 免费观看成人av| 天天免费综合色| 亚洲一区在线视频| 一区在线观看视频| 久久精品欧美一区二区三区不卡 | 欧美一级高清片| 欧美日韩日日摸| 欧美剧情片在线观看| 色婷婷激情综合| 色视频成人在线观看免| 波多野结衣一区二区三区| 国产精品123| 国产suv一区二区三区88区| 久久99蜜桃精品| 精品午夜久久福利影院| 蜜臀精品一区二区三区在线观看| 午夜视频在线观看一区二区| 一个色在线综合| 性做久久久久久免费观看| 亚洲视频一区在线| 一区二区在线观看免费视频播放| 亚洲视频电影在线| 亚洲丝袜美腿综合| 一区二区三区蜜桃| 亚洲电影视频在线| 日韩vs国产vs欧美| 精品一区二区三区在线播放视频 | 91麻豆免费看| 色悠悠亚洲一区二区| 91丨porny丨蝌蚪视频| 欧美午夜宅男影院| 欧美性一级生活| 欧美肥妇bbw| 精品剧情在线观看| 精品国产乱码91久久久久久网站| 久久美女艺术照精彩视频福利播放 | 在线亚洲欧美专区二区| 欧美综合一区二区| 欧美一区二区不卡视频| 亚洲精品在线观看视频| 国产午夜精品久久| 久久综合av免费| 亚洲精品视频在线观看免费 | 精品成人在线观看| 欧美韩国日本综合| 亚洲国产va精品久久久不卡综合| 男男视频亚洲欧美| 成人激情黄色小说| 精品视频一区二区不卡| 欧美一区二区三区免费| 亚洲国产精品激情在线观看| 夜夜嗨av一区二区三区| 日韩和的一区二区| 成人免费黄色大片| 5月丁香婷婷综合| 中文字幕一区二区不卡| 天堂资源在线中文精品| 国产91精品久久久久久久网曝门| 91精彩视频在线|