亚洲欧美第一页_禁久久精品乱码_粉嫩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激情综合网| 色综合久久久久综合体| 日韩视频免费观看高清完整版 | av亚洲产国偷v产偷v自拍| 91精品免费观看| 亚洲六月丁香色婷婷综合久久 | 日本高清不卡一区| 精品999久久久| 日韩电影在线免费观看| 91社区在线播放| 中文字幕国产一区| 精品一区二区在线免费观看| 欧美日韩精品综合在线| 亚洲男人的天堂网| 不卡的av电影在线观看| 久久精品一区二区三区不卡| 日本欧美一区二区| 欧美群妇大交群中文字幕| 亚洲日本成人在线观看| 国产电影一区二区三区| 精品奇米国产一区二区三区| 日韩精品五月天| 91精品国产手机| 亚洲成人激情社区| 在线精品视频免费播放| 亚洲精品中文字幕在线观看| 色婷婷精品大在线视频| 亚洲视频小说图片| 99久久国产免费看| 18成人在线视频| 99久久婷婷国产综合精品| 国产精品美女一区二区| 92精品国产成人观看免费| 国产精品久久一级| av一二三不卡影片| 综合久久久久久| 欧美综合欧美视频| 亚洲国产一二三| 欧美老人xxxx18| 乱中年女人伦av一区二区| 91精品久久久久久久91蜜桃 | 91精品国产麻豆国产自产在线 | 日韩激情一二三区| 日韩一区二区三区视频| 九色综合狠狠综合久久| 久久久久国色av免费看影院| 丁香啪啪综合成人亚洲小说| 亚洲手机成人高清视频| 欧亚洲嫩模精品一区三区| 亚洲成av人片在线| 日韩午夜精品视频| 国产91精品免费| 亚洲欧美日韩中文播放| 欧美精品亚洲一区二区在线播放| 琪琪久久久久日韩精品| 国产日韩v精品一区二区| www.视频一区| 午夜精品爽啪视频| 精品第一国产综合精品aⅴ| 成人爱爱电影网址| 无码av免费一区二区三区试看| 欧美xxxx在线观看| proumb性欧美在线观看| 亚洲成人高清在线| 国产欧美日韩三级| 欧美美女视频在线观看| 国产一区二区精品在线观看| 艳妇臀荡乳欲伦亚洲一区| 欧美成人bangbros| 在线看国产一区| 国产suv一区二区三区88区| 一区二区三区中文免费| 亚洲精品在线电影| 日本国产一区二区| 国产麻豆精品一区二区| 一区二区三区高清| 国产亚洲欧美中文| 91麻豆精品国产自产在线| 东方aⅴ免费观看久久av| 丝袜国产日韩另类美女| 亚洲欧洲日韩av| 91视频国产资源| 国产美女久久久久| 午夜久久久久久久久久一区二区| 亚洲欧洲国产日本综合| 精品国偷自产国产一区| 欧美日韩中文字幕一区二区| 成人精品电影在线观看| 久久99国产精品尤物| 午夜精品久久久久久久久| 中文字幕亚洲欧美在线不卡| 2021久久国产精品不只是精品| 欧美日韩午夜在线| 色综合欧美在线视频区| 成人综合日日夜夜| 国内精品国产三级国产a久久| 日韩激情中文字幕| 亚洲成人激情av| 亚洲图片有声小说| 亚洲美女屁股眼交3| 国产精品久久午夜| 欧美国产日本韩| 欧美国产亚洲另类动漫| 久久综合狠狠综合久久激情| 日韩免费一区二区| 日韩一区和二区| 777欧美精品| 欧美精品乱码久久久久久按摩| 一本到不卡精品视频在线观看| www.亚洲色图| 97精品国产露脸对白| 成人av小说网| 91免费在线看| 日本乱人伦aⅴ精品| 91官网在线免费观看| 91麻豆成人久久精品二区三区| av一本久道久久综合久久鬼色| 99久久国产综合精品女不卡| av在线播放一区二区三区| 波多野结衣中文字幕一区二区三区| 国产成人夜色高潮福利影视| 国产精品亚洲一区二区三区在线| 国产成人一区在线| 91亚洲精品久久久蜜桃网站| 在线亚洲免费视频| 欧美二区三区的天堂| 91精品国产色综合久久不卡电影 | 国产精品亚洲专一区二区三区| 国产suv一区二区三区88区| 成人夜色视频网站在线观看| 99精品视频免费在线观看| 在线观看日韩电影| 欧美日本一区二区在线观看| 日韩欧美国产成人一区二区| 久久精品人人做人人综合| 中文字幕在线不卡一区二区三区| 一区二区三区在线看| 日韩黄色免费电影| 国产美女娇喘av呻吟久久| 99视频精品全部免费在线| 欧美日韩一区视频| 精品国产青草久久久久福利| 亚洲品质自拍视频网站| 日本午夜一本久久久综合| 国产91丝袜在线播放| 欧美日韩不卡一区| 久久久久国产一区二区三区四区| 综合在线观看色| 蜜臀久久99精品久久久久久9| 岛国精品在线播放| 制服丝袜成人动漫| 国产精品美女久久久久久久久久久 | 国产视频一区二区在线观看| 亚洲视频在线一区观看| 美女网站视频久久| 99精品国产91久久久久久| 日韩免费观看高清完整版在线观看| 中文字幕av一区二区三区高| 亚洲国产精品自拍| 成人午夜精品在线| 91精品一区二区三区久久久久久| 日本一区二区三区在线不卡| 五月激情丁香一区二区三区| 国产成人a级片| 在线不卡免费av| 国产精品福利电影一区二区三区四区| 午夜电影网亚洲视频| 大尺度一区二区| 7777精品伊人久久久大香线蕉经典版下载| 国产偷国产偷亚洲高清人白洁| 丝袜美腿亚洲色图| 一本一道久久a久久精品综合蜜臀| 欧美一级高清片在线观看| 国产精品网站在线播放| 奇米777欧美一区二区| 日本精品视频一区二区| 国产精品你懂的在线欣赏| 捆绑变态av一区二区三区| 欧美久久久久中文字幕| 欧美极品美女视频| 国产一区二区三区av电影| 欧美一级电影网站| 日韩成人午夜精品| 欧美体内she精视频| 亚洲精品视频在线看| 成人app软件下载大全免费| 久久久久久久久99精品| 日韩—二三区免费观看av| 欧洲精品在线观看| 亚洲综合色视频| 99久久亚洲一区二区三区青草| 欧美高清在线一区二区| 国产高清久久久久| 国产色爱av资源综合区| 国产1区2区3区精品美女| 国产欧美日韩不卡免费| 国产成a人无v码亚洲福利| 国产精品视频在线看| 成人免费av在线|