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

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

?? mapxapis.~pas

?? 此代碼是關于mapgis的在
?? ~PAS
?? 第 1 頁 / 共 3 頁
字號:
    Result:=False
  else
    case Ft.type_ of
      miFeatureTypeRegion,
      miFeatureTypeLine:begin
        Result:=True;
      end;
      else begin
        Result:=False;
      end;
    end;
end;

function ShapeCanDeletePoint(Ft:Feature; PartIndex:Integer):Boolean;
begin
  if not Ft.Layer.Editable then
    Result:=False
  else
    case Ft.type_ of
      miFeatureTypeRegion:begin
        Result:=Ft.Parts.Item[PartIndex].Count>3;
      end;
      miFeatureTypeLine:begin
        Result:=Ft.Parts.Item[PartIndex].Count>2;
      end;
      else begin
        Result:=False;
      end;
    end;
end;

function ShapeCanEditPoint(Ft:Feature; PartIndex:Integer):Boolean;
begin
  Result:=Ft.Layer.Editable;
end;

function GetShapePoint(Ft:Feature; const PartIndex, PointIndex:Integer):Point;
begin
  case Ft.type_ of
    miFeatureTypeSymbol,
    miFeatureTypeText:begin
      Result:=Ft.Point;
    end;
    else begin
      Result:=Ft.Parts.Item[PartIndex].Item[PointIndex];
    end;
  end;
end;

function GetFirstShapeInSelction(ASelection:Selection; const ShapeType:Integer):Feature;
var
  i:Integer;
  ft:Feature;
begin
  Result:=nil;
  for i:=1 to ASelection.Count do
  begin
    ft:=ASelection.Item[i];
    if ft.type_=ShapeType then
    begin
      Result:=ft;
      Exit;
    end;
  end; 
end;

procedure AlignLeft(ASelection:Selection);
var
  i:Integer;
  v_x0, v_x:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_x0:=ASelection.Item[1].Bounds.XMin;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_x:=ft.Bounds.XMin;
      ft.Offset(v_x0-v_x, 0);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure AlignRight(ASelection:Selection);
var
  i:Integer;
  v_x0, v_x:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_x0:=ASelection.Item[1].Bounds.XMax;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_x:=ft.Bounds.XMax;
      ft.Offset(v_x0-v_x, 0);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure AlignTop(ASelection:Selection);
var
  i:Integer;
  v_y0, v_y:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_y0:=ASelection.Item[1].Bounds.YMax;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_y:=ft.Bounds.YMax;
      ft.Offset(0, v_y0-v_y);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure AlignBottom(ASelection:Selection);
var
  i:Integer;
  v_y0, v_y:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_y0:=ASelection.Item[1].Bounds.YMin;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_y:=ft.Bounds.YMin;
      ft.Offset(0, v_y0-v_y);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure AlignCenter_X(ASelection:Selection);
var
  i:Integer;
  v_x0, v_x:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_x0:=ASelection.Item[1].CenterX;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_x:=ft.CenterX;
      ft.Offset(v_x0-v_x, 0);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure AlignCenter_Y(ASelection:Selection);
var
  i:Integer;
  v_y0, v_y:Double;
  ft:Feature;
begin
  if ASelection.Count>1 then
  begin
    v_y0:=ASelection.Item[1].CenterY;
    for i:=2 to ASelection.Count do
    begin
      ft:=ASelection.Item[i];
      v_y:=ft.CenterY;
      ft.Offset(0, v_y0-v_y);
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure OffestShapes(ASelection:Selection; const dx, dy:Double);
var
  i:Integer;
  ft:Feature;
begin
  for i:=1 to ASelection.Count do
  begin
    ft:=ASelection.Item[i];
    ft.Offset(dx, dy);
    ft.Update(EmptyParam, EmptyParam);
  end;
end;

function AddCopyFeature(ToLayer:Layer; Ft:Feature; ds:CMapXDataSet;
  const bAddData:Boolean):Feature;
var
  i:Integer;
  rvs:RowValues;
  newrvs:RowValues;
begin
  if ds<>nil then
    rvs:=ds.RowValues[ft]
  else
    rvs:=nil;
  if rvs=nil then
    Result:=ToLayer.AddFeature(ft, EmptyParam)
  else
  begin
    newrvs:=CreateRowValuesFromStruct(ds.Fields, ToLayer.DataSets.Item[1]);
    for i:=1 to ds.Fields.Count do
      newrvs.Item[i].Value:=rvs.Item[i].Value;
    Result:=ToLayer.AddFeature(ft, newrvs);
  end;
end;

function PickStyle(mstyle:OleVariant; const pm:TPickMethod):Boolean;
begin
  case pm of
    pmSymbol  : Result:=mstyle.PickSymbol;
    pmLine    : Result:=mstyle.PickLine;
    pmRegion  : Result:=mstyle.PickRegion;
    pmText    : Result:=mstyle.PickText;
    else        Result:=False;
  end;
end;

function EditMapStyle(MapX:TMapXObject; const pm:TPickMethod;
  const bEffectAllLayers, bEffectAllFeatures:Boolean):Boolean;
var
  i:Integer;
  Lyr:Layer;
  mstyle: OleVariant;
begin
  mstyle:=MapX.DefaultStyle.Clone;
  Result:=PickStyle(mstyle, pm);
  if bEffectAllLayers then
    for i:=1 to MapX.Layers.Count do
    begin
      Lyr:=MapX.Layers.Item[i];
      Lyr.Style:=Style(IDispatch(mstyle));
      Lyr.OverrideStyle:=bEffectAllFeatures;
    end;
end;

function EditLayerStyle(Lyr:Layer; const pm:TPickMethod;
  const bEffectAllFeatures:Boolean):Boolean;
var
  mstyle: OleVariant;
begin
  mstyle:=Lyr.Style.Clone;
  Result:=PickStyle(mstyle, pm);
  Lyr.Style:=Style(IDispatch(mstyle));
  Lyr.OverrideStyle:=bEffectAllFeatures;
end;

function GetFeaturePickMethod(ft:Feature):TPickMethod;
begin
  case ft.type_ of
    miFeatureTypeRegion     : Result:=pmRegion;
    miFeatureTypeLine       : Result:=pmLine;
    miFeatureTypeSymbol,
    miFeatureTypeMultipoint : Result:=pmSymbol;
    miFeatureTypeText       : Result:=pmText;
    else                      Result:=pmUnknown;
  end;
end;

function EditFeatureStyle(ft:Feature):Boolean;
var
  pm:TPickMethod;
  mstyle: OleVariant;
begin
  ft.Layer.OverrideStyle:=False;
  mstyle:=ft.Style.Clone;
  pm:=GetFeaturePickMethod(ft);
  Result:=PickStyle(mstyle, pm);
  if Result then
  begin
    ft.Style:=Style(IDispatch(mstyle));
    ft.Update(EmptyParam, EmptyParam);
  end;
end;

procedure LoadSymbolBitmap(const SourceFile, SymbolPath:string);
var
  DestFile:string;
begin
  DestFile:=GetFilePath_GradientLine(SymbolPath)+ExtractFileName(SourceFile);
  if FileExists(SourceFile) then CopyFile(PChar(SourceFile), PChar(DestFile), False);
end;

procedure LoadSymbolBitmaps(Files:TStrings; SymbolPath:string);
var
  i:Integer;
  SourceFile:string;
  DestFile:string;
begin
  if not DirectoryExists(SymbolPath) then
    raise Exception.Create('路徑 '+SymbolPath+' 不存在!');
  for i:=0 to Files.Count-1 do
  begin
    SourceFile:=Files.Strings[i];
    DestFile:=GetFilePath_GradientLine(SymbolPath)+ExtractFileName(SourceFile);
    if FileExists(SourceFile) then CopyFile(PChar(SourceFile), PChar(DestFile), False);
  end;
end;

procedure LoadSymbolBitmaps(UserPath:string; const ForceCopy:Boolean);
var
  SymbolPath:string;
  hFindFile:Cardinal;
  sCurDir:String[255];
  FindData:TWin32FindData;
  ShortFileName:string;
  SourceFileName, DestFileName:string;
  ErrorDir: string;
begin
  UserPath:=CheckPath(UserPath);
  SymbolPath:=CheckPath(GetMapXBitmapPath);
  if (not DirectoryExists(UserPath)) or
     (not DirectoryExists(SymbolPath)) then Exit;
  {保存當前目錄并設置目標路徑為當前目錄}
  sCurDir:=GetCurrentDir;
  ChDir(UserPath);
  try
    {查找目標路徑下所有文件}
    hFindFile:=FindFirstFile('*.bmp',FindData);
    if hFindFile <> INVALID_HANDLE_VALUE then
    begin
      {分析該目錄并完成刪除多余文件或目錄的任務}
      repeat
        {取得目標文件名}
        ShortFileName:=FindData.cFileName;
        {如果為上層路徑,則Continue}
        if (ShortFileName='.') or (ShortFileName='..') then
          Continue;
        DestFileName:=SymbolPath+ShortFileName;
        if ForceCopy then
        begin
          SourceFileName:=UserPath+ShortFileName;
          CopyFile(PChar(SourceFileName), PChar(DestFileName), False);
        end
        else if not FileExists(DestFileName) then
        begin
          SourceFileName:=UserPath+ShortFileName;
          CopyFile(PChar(SourceFileName), PChar(DestFileName), True);
        end;
      until FindNextFile(hFindFile, FindData)=False;
      Windows.FindClose(hFindFile);
      {刪除目標目錄多余的文件}
    end;
  finally
    {回到原來的目錄下}
    ChDir(sCurDir);
  end;
end;

function SymbolBitmapExists(SymbolPath, SymbolName:string):Boolean;
var
  DestFile:string;
begin
  DestFile:=GetFilePath_GradientLine(SymbolPath)+SymbolName;
  Result:=FileExists(DestFile);
end;

procedure ConfigLineStyleFromRegionStyle(ToStyle, FromStyle:Style);
begin
  ToStyle.LineColor:=FromStyle.RegionBorderColor;
  ToStyle.LineStyle:=FromStyle.RegionBorderStyle;
  ToStyle.LineWidth:=FromStyle.RegionBorderWidth;
  ToStyle.LineWidthUnit:=FromStyle.RegionBorderWidthUnit;
end;

procedure ConfigRegionStyleFromLineStyle(ToStyle, FromStyle:Style);
begin
  ToStyle.RegionBorderColor:=FromStyle.LineColor;
  ToStyle.RegionBorderStyle:=FromStyle.LineStyle;
  ToStyle.RegionBorderWidth:=FromStyle.LineWidth;
  ToStyle.RegionBorderWidthUnit:=FromStyle.LineWidthUnit;
end;

function GetMapXPath:string;
var
  Reg: TRegistry;
begin
  Reg:=Tregistry.Create;
  try
    Reg.RootKey :=HKEY_LOCAL_MACHINE;
    if Reg.OpenKey ('SOFTWARE\Mapinfo\MapX\5.0', False) then
      Result:=Reg.ReadString('ProgramDir')
    else
      Result:='';
    Reg.CloseKey;
  finally
    Reg.Destroy;
  end;
end;

function GetMapXBitmapPath:string;
begin
  Result:=GetMapXPath;
  if Result<>'' then
    Result:=CheckPath(Result)+'CUSTSYMB';
end;

function GetGeoDictionaryFile:string;
var
  Reg: TRegistry;
begin
  Reg:=Tregistry.Create;
  try
    Reg.RootKey :=HKEY_LOCAL_MACHINE;
    if Reg.OpenKey ('SOFTWARE\Mapinfo\MapX\5.0', False) then
      Result:=Reg.ReadString('GeoDictionary')
    else
      Result:='';
    Reg.CloseKey;
  finally
    Reg.Destroy;
  end;
end;

function SetGeoDictionaryFile(const FileName:string):Boolean;
var
  Reg: TRegistry;
begin
  Result:=False;
  Reg:=Tregistry.Create;
  try
    Reg.RootKey :=HKEY_LOCAL_MACHINE;
    if Reg.OpenKey ('SOFTWARE\Mapinfo\MapX\5.0', True) then
    begin
      Reg.WriteString('GeoDictionary', FileName);
      Result:=True;
    end;
    Reg.CloseKey;
  finally
    Reg.Destroy;
  end;
end;

function GetGeoDictionaryFileSearchPath(List:TStrings):Boolean;
var
  Reg:TRegistry;
  aStr:string;
begin
  Result:=False;
  Reg:=Tregistry.Create;
  try
    Reg.RootKey :=HKEY_LOCAL_MACHINE;
    if Reg.OpenKey ('SOFTWARE\Mapinfo\MapX\5.0', False) then
    begin
      aStr:=Reg.ReadString('SearchPaths');
      Result:=True;
    end;
    Reg.CloseKey;
  finally
    Reg.Destroy;
  end;
  if Result then
    Trans2(aStr, ';', List);
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品久久免费看蜜臀剧情介绍| 成人黄色片在线观看| 2020国产精品| caoporen国产精品视频| 久久久高清一区二区三区| 经典一区二区三区| 亚洲免费观看高清在线观看| 欧美日韩精品久久久| 国产精品一线二线三线| 亚洲免费av网站| 5月丁香婷婷综合| 成人午夜碰碰视频| 三级不卡在线观看| 国产片一区二区| 欧美情侣在线播放| 国产乱妇无码大片在线观看| 亚洲精品乱码久久久久久久久 | 不卡一区二区在线| 日本不卡一区二区三区| 国产精品久久久99| 日韩手机在线导航| 97aⅴ精品视频一二三区| 亚洲国产欧美在线人成| 国产午夜精品一区二区三区视频 | 日本不卡不码高清免费观看| 国产精品视频一二三区| 91精品国产手机| 99re这里只有精品6| 久久国产精品一区二区| 一区二区三区中文字幕| 国产亚洲一二三区| 欧美一级爆毛片| 在线观看一区二区视频| 成人性生交大合| 美腿丝袜一区二区三区| 亚洲午夜三级在线| 中文一区在线播放| 欧美成人女星排行榜| 91国偷自产一区二区三区观看| 国产一区二区三区在线观看精品 | 成人av在线播放网站| 国内精品视频666| 午夜久久久影院| 国产精品国产自产拍在线| 精品福利在线导航| 91精品国产免费| 欧美三级视频在线观看| 日本久久一区二区三区| 99久久久无码国产精品| 国产成人av电影| 国产美女精品一区二区三区| 久久不见久久见免费视频7| 美腿丝袜亚洲三区| 亚洲自拍与偷拍| 亚洲精品成人悠悠色影视| 国产欧美一区二区精品性色 | 成人黄色小视频| 风间由美性色一区二区三区| 精品一区二区国语对白| 久久国产精品72免费观看| 午夜不卡av免费| 亚洲综合色在线| 一个色综合网站| 亚洲综合成人在线| 午夜精品久久久久久久久| 午夜久久久影院| 人人精品人人爱| 久久国产免费看| 国产九色精品成人porny| 国产黄人亚洲片| 国产美女在线精品| 国产suv精品一区二区883| 国产毛片精品一区| 国产精品自在在线| 成人在线视频一区二区| 成人性生交大片免费看中文 | 亚洲欧洲精品一区二区三区不卡| 国产精品久久久久aaaa| 一区二区三区四区精品在线视频| 亚洲午夜电影网| 日本不卡视频一二三区| 国产乱码精品一区二区三区忘忧草 | 亚洲乱码精品一二三四区日韩在线| 久久久99精品免费观看不卡| 欧美国产1区2区| 亚洲精品第1页| 美女爽到高潮91| 国产麻豆成人精品| 91在线播放网址| 在线综合视频播放| 国产欧美一区二区精品性| 亚洲免费观看视频| 调教+趴+乳夹+国产+精品| 视频一区免费在线观看| 国产在线精品一区二区不卡了| 成人免费高清视频| 欧美性感一类影片在线播放| 日韩一区二区在线看| 中文字幕欧美国产| 亚洲一区二区四区蜜桃| 亚欧色一区w666天堂| 免费不卡在线观看| 成人高清视频免费观看| 欧美精品久久久久久久多人混战| 亚洲精品一区二区三区香蕉| 亚洲欧美韩国综合色| 日本视频在线一区| www.日韩在线| 日韩三级视频在线观看| 国产精品久久精品日日| 美女脱光内衣内裤视频久久影院| 国产精品小仙女| 欧美美女bb生活片| 亚洲欧洲日韩av| 日韩专区一卡二卡| 99久久99久久精品免费观看| 日韩精品专区在线影院观看| 亚洲免费成人av| 成人丝袜高跟foot| 日韩一区二区精品| 一个色综合av| av午夜一区麻豆| 精品久久一区二区三区| 中文字幕制服丝袜成人av| 精品在线观看视频| 777亚洲妇女| 一区二区三区欧美久久| 国产91在线观看丝袜| 日韩欧美国产综合一区 | 国产精品久久网站| 麻豆精品久久精品色综合| 欧洲av一区二区嗯嗯嗯啊| 国产精品视频第一区| 激情综合色综合久久综合| 97aⅴ精品视频一二三区| 欧美xxxxxxxxx| 亚洲色图视频网| 成人一区二区在线观看| 久久综合中文字幕| 激情深爱一区二区| 欧美一二三区在线| 日韩精品色哟哟| 欧美高清你懂得| 亚洲成人激情自拍| 欧美午夜精品久久久久久孕妇| 亚洲天堂av老司机| 国产黑丝在线一区二区三区| 亚洲精品在线网站| 久久精品国产澳门| 日韩视频一区二区三区| 轻轻草成人在线| 欧美一区二区私人影院日本| 九九九久久久精品| 国产日产欧美一区二区视频| 成人av电影在线播放| 亚洲欧美日韩成人高清在线一区| 欧美综合色免费| 蜜桃视频在线观看一区| 国产日韩欧美精品综合| 一本大道久久精品懂色aⅴ| 亚洲一区中文在线| 日韩一区二区三区在线视频| 国产精品99久| 亚洲精品中文在线影院| 91精品国产综合久久婷婷香蕉| 久久99精品国产麻豆婷婷洗澡| 国产三级一区二区| 色av一区二区| 久久国产尿小便嘘嘘尿| 国产精品理伦片| 69堂成人精品免费视频| 国产成人免费9x9x人网站视频| 亚洲欧美日韩一区二区 | 免费视频最近日韩| 国产网红主播福利一区二区| 91激情五月电影| 国产在线精品一区二区三区不卡 | 婷婷久久综合九色综合绿巨人 | 日韩三区在线观看| 国产 日韩 欧美大片| 亚洲午夜电影网| 中文字幕国产一区| 欧美日韩你懂得| 国产成人精品一区二区三区四区| 亚洲四区在线观看| 日韩一区二区三免费高清| 成年人午夜久久久| 久久精品国产久精国产爱| 一区二区在线观看免费视频播放| 欧美一区二区精品久久911| 成人午夜视频免费看| 日本sm残虐另类| 一区二区三区中文字幕电影| 久久久久久毛片| 91精品国产欧美一区二区18| 91尤物视频在线观看| 国产一区二区福利| 日本视频一区二区三区| 亚洲久草在线视频| 久久九九99视频|