亚洲欧美第一页_禁久久精品乱码_粉嫩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片| 91精品蜜臀在线一区尤物| 国产精品午夜在线| 免费成人av在线| 99免费精品视频| 久久九九久精品国产免费直播| 亚洲国产中文字幕| 成人av网站在线观看| 欧美一区二区三区免费大片| 中文字幕欧美一区| 国产精品69久久久久水密桃| 日韩一卡二卡三卡四卡| 亚洲国产中文字幕在线视频综合 | 欧美精品乱码久久久久久| 久久久久久久网| 久久精品国产亚洲高清剧情介绍 | 99久久精品国产导航| 久久综合九色综合欧美亚洲| 五月综合激情网| 色偷偷久久一区二区三区| 国产精品久久久久久久岛一牛影视| 久久er99精品| 精品日韩av一区二区| 午夜精品影院在线观看| 欧美在线看片a免费观看| 亚洲日本电影在线| 91在线你懂得| 一区二区三区精密机械公司| 99在线热播精品免费| 国产精品久久免费看| 国产白丝精品91爽爽久久| 久久色在线视频| 国产高清久久久| 亚洲一区二区三区视频在线播放 | 欧美一区二区精品| 蜜臀va亚洲va欧美va天堂 | 国产精品一区在线观看你懂的| 精品国产乱码久久| 国产在线乱码一区二区三区| 精品国产伦一区二区三区观看方式| 蜜桃视频免费观看一区| 欧美va亚洲va在线观看蝴蝶网| 久久er99精品| 欧美高清在线一区二区| 92精品国产成人观看免费| 亚洲精品视频在线观看网站| 欧美中文字幕一区| 全国精品久久少妇| 久久青草国产手机看片福利盒子| 国产成人精品1024| 亚洲欧美日韩国产另类专区 | 日本aⅴ免费视频一区二区三区 | 一区二区三区视频在线观看| 欧美视频完全免费看| 免费成人美女在线观看| 久久久99精品久久| 91小视频免费观看| 日韩电影免费在线看| 久久精品网站免费观看| 色老头久久综合| 久久精品国产99久久6| 国产日产欧美一区| 日本韩国一区二区三区视频| 日日摸夜夜添夜夜添精品视频| 日韩免费高清电影| 成人美女在线观看| 三级影片在线观看欧美日韩一区二区| 精品对白一区国产伦| 色综合欧美在线视频区| 奇米精品一区二区三区在线观看 | 欧美日韩国产片| 国产乱子伦一区二区三区国色天香| 欧美国产精品久久| 91精品在线观看入口| 国产精品一区2区| 一区二区激情视频| 久久中文娱乐网| 在线视频一区二区免费| 国产精品伊人色| 日韩国产高清在线| 中文字幕日韩一区二区| 日韩你懂的在线观看| 色综合久久综合| 国产另类ts人妖一区二区| 亚洲午夜私人影院| 国产精品国产精品国产专区不蜜| 日韩欧美亚洲国产另类| 91成人在线精品| 国产成人啪免费观看软件| 日韩av电影免费观看高清完整版| 国产精品理伦片| 国产欧美中文在线| 精品免费日韩av| 欧洲激情一区二区| 99久久久精品| 国v精品久久久网| 国内精品自线一区二区三区视频| 亚洲综合丝袜美腿| 亚洲女同ⅹxx女同tv| 中文字幕欧美激情一区| 日韩精品一区二区在线| 欧美狂野另类xxxxoooo| 91日韩在线专区| 91在线视频免费91| www.99精品| av激情综合网| 99re66热这里只有精品3直播 | 最新不卡av在线| 国产精品视频第一区| 久久久久久久久久久电影| 日韩精品一区二区三区在线播放| 欧美酷刑日本凌虐凌虐| 欧美喷潮久久久xxxxx| 欧美人与z0zoxxxx视频| 欧美精品1区2区3区| 欧美丰满美乳xxx高潮www| 欧美人xxxx| 日韩精品一区在线观看| 精品乱码亚洲一区二区不卡| 日韩欧美国产精品| 精品av综合导航| 久久久久久久综合| 中文久久乱码一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久久久亚洲午夜电影| 久久久久9999亚洲精品| 国产精品午夜在线| 一区二区三区四区在线播放 | 日韩欧美第一区| 久久午夜电影网| 中文字幕成人在线观看| 亚洲精品免费电影| 日韩精品高清不卡| 韩国精品久久久| 91亚洲精品久久久蜜桃| 欧美视频你懂的| 精品国产精品网麻豆系列| 国产精品亲子乱子伦xxxx裸| 亚洲免费资源在线播放| 琪琪久久久久日韩精品| 懂色av一区二区在线播放| 日本乱码高清不卡字幕| 欧美一卡2卡三卡4卡5免费| 久久人人97超碰com| 亚洲人成亚洲人成在线观看图片| 天堂一区二区在线免费观看| 国产美女精品在线| 色综合久久久久久久久| 日韩免费成人网| 亚洲柠檬福利资源导航| 久久99精品久久久| 91蝌蚪porny九色| 777奇米四色成人影色区| 欧美国产禁国产网站cc| 偷窥少妇高潮呻吟av久久免费| 精品无人码麻豆乱码1区2区 | 国产精品亚洲午夜一区二区三区 | 国产91精品一区二区| 在线观看91精品国产麻豆| 日本一区二区视频在线| 日韩av在线免费观看不卡| 99久久久久久| 国产日韩欧美在线一区| 蜜臀精品一区二区三区在线观看 | 欧美午夜精品久久久久久超碰| 日韩精品一区二区三区视频在线观看| 成人欧美一区二区三区小说| 精品一区二区影视| 欧美色中文字幕| 中文字幕在线观看一区| 国模少妇一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲欧洲日韩在线| 国产成人免费视频精品含羞草妖精| 欧美日韩国产综合一区二区| 中文字幕av免费专区久久| 国产一区二区三区四区五区美女| 在线观看亚洲专区| 国产清纯白嫩初高生在线观看91| 天天色综合成人网| 成人a免费在线看| 中文在线一区二区| 蜜桃精品视频在线观看| 在线免费观看成人短视频| 一色桃子久久精品亚洲| 极品少妇xxxx精品少妇偷拍| 欧美日韩一区二区三区在线看 | 另类小说一区二区三区| 欧洲激情一区二区| 国产精品你懂的| 国产一区二区影院| 久久精品综合网| 蜜桃久久久久久| 欧美日韩精品欧美日韩精品 | 国产精品视频观看| 国产精品一区二区三区网站| 欧美一区二区三区公司| 国产精品少妇自拍|