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

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

?? unitdrawshape.pas

?? 此代碼是關于mapgis的在
?? PAS
字號:
unit UnitDrawShape;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, YHBListBox, NumberEditUnit, MapXLib_TLB, Buttons, Math;

type
  TFrame_DrawShape = class(TFrame)
    GroupBox1: TGroupBox;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    GroupBox4: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    XOffestEdit: TUpDownEditFloat;
    YOffestEdit: TUpDownEditFloat;
    GroupBox5: TGroupBox;
    ValueList: TYHBListBox;
    GroupBox3: TGroupBox;
    Label4: TLabel;
    Label3: TLabel;
    CheckBox1: TCheckBox;
    YEdit: TUpDownEditFloat;
    XEdit: TUpDownEditFloat;
    GroupBox2: TGroupBox;
    ImportPointsBtn: TButton;
    InsertPointBtn: TButton;
    DeletePointBtn: TButton;
    AddPointBtn: TButton;
    CompleteBtn: TButton;
    EditPointBtn: TButton;
    ApplyOffestBtn: TButton;
    procedure YEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure XEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure CompleteBtnClick(Sender: TObject);
    procedure AddPointBtnClick(Sender: TObject);
    procedure DeletePointBtnClick(Sender: TObject);
    procedure ValueListClick(Sender: TObject);
    procedure EditPointBtnClick(Sender: TObject);
    procedure InsertPointBtnClick(Sender: TObject);
    procedure ApplyOffestBtnClick(Sender: TObject);
    procedure XOffestEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure YOffestEditKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
  private
    { Private declarations }
    Ft:Feature;
    IsComplete:Boolean;
    function CreateShape(const v_x, v_y:Double):Feature;
    function AddPointToShape(const v_x, v_y:Double):Boolean;
    procedure GetInputPointValue(var v_x, v_y:Double);
    procedure LoadFeaturePoints(aFt:Feature);
    procedure SetComplete;
  public
    { Public declarations }
    procedure SelectionChanged;
    procedure EditFeature(aFt:Feature);
  end;

implementation

uses UnitGISShell, UnitShellAPIs, MapXStyles, BusinessDialogs, MapXAPIs,
  MapXBase, MapXTools, MapXConsts;

{$R *.dfm}

function TFrame_DrawShape.CreateShape(const v_x, v_y:Double): Feature;
var
  aToolObj:TBaseMapTool;
begin
  CheckEditLayer;
  MyGIS.GMapTools.m_Layer.Layer:=EditLayer;
  aToolObj:=MyGIS.GMapTools.m_Map.GetToolObjectByToolId(MyGIS.GMapTools.m_Map.MapX.CurrentTool);
  if aToolObj=nil then
    WarningAbort('系統錯誤', '無法取得工具對象!');
  case aToolObj.UserType of
    MAP_TOOL_ADDSYMBOL:begin//標記
      Result:=MyGIS.GMapTools.m_Layer.AddSymbol(v_x, v_y, STYLE_LAYERSTYLE, False, ID_ACTION_CREATE);
      IsComplete:=True;
    end;
    MAP_TOOL_ADDLINE, MAP_TOOL_ADDPLINE:begin//線段
      Result:=MyGIS.GMapTools.m_Layer.AddLine(v_x, v_y, v_x, v_y, STYLE_LAYERSTYLE, False, ID_ACTION_CREATE);
      IsComplete:=False;
    end;
    MAP_TOOL_ADDRECT, MAP_TOOL_ADDREGION:begin//矩形
      Result:=MyGIS.GMapTools.m_Layer.AddRectangle(v_x, v_y, v_x, v_y, '', STYLE_LAYERSTYLE, False, ID_ACTION_CREATE);
      IsComplete:=False;
    end;
    MAP_TOOL_ADDCIRCLE, MAP_TOOL_ADDELLIPSE:begin//圓、橢圓
      Result:=MyGIS.GMapTools.m_Layer.AddCircle(v_x, v_y, 1, STYLE_LAYERSTYLE, True, ID_ACTION_CREATE);
      IsComplete:=False;
    end;
    else begin
      Result:=nil;
      IsComplete:=True;
      WarningAbort('提示', '請設置為增加圖形模式!');
    end;
  end;
end;

procedure TFrame_DrawShape.YEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=vk_return then
    AddPointBtnClick(AddPointBtn);
end;

procedure TFrame_DrawShape.XEditKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key=vk_return then YEdit.SetFocus;
end;

procedure TFrame_DrawShape.CompleteBtnClick(Sender: TObject);
var
  aToolObj:TBaseMapTool;
  Tool_Min, Tool_Max:Integer;
begin
  CheckEditLayer;
  MyGIS.GMapTools.m_Layer.Layer:=EditLayer;
  aToolObj:=MyGIS.GMapTools.m_Map.GetToolObjectByToolId(MyGIS.GMapTools.m_Map.MapX.CurrentTool);
  if aToolObj=nil then
    WarningAbort('系統錯誤', '無法取得工具對象!');
  GetAddObjectToolRange(Tool_Min, Tool_Max);
  if (aToolObj.UserType<Tool_Min)or(aToolObj.UserType>Tool_Max) then
    WarningAbort('提示', '請設置為增加圖形模式!');
  SetComplete;
end;

procedure TFrame_DrawShape.SelectionChanged;
begin
  SetComplete;

  ValueList.Items.Clear;
  XEdit.Value:=0;
  YEdit.Value:=0;
  CheckBox1.Checked:=False;

  if (EditLayer<>nil)and(EditLayer.Editable)and
     (EditLayer.Selection.Count>0) then
  begin
    //顯示公共屬性面板//
    //如果為單一圖形,則顯示特性面板//
    if EditLayer.Selection.Count=1 then
      EditFeature(EditLayer.Selection.Item[1]);
  end;
end;

function TFrame_DrawShape.AddPointToShape(const v_x, v_y:Double):Boolean;
begin
  case Ft.type_ of
    miFeatureTypeRegion, miFeatureTypeLine:begin
      if ValueList.Count=1 then
        Ft.Parts.Item[1].Item[2].Set_(v_x, v_y)
      else
        Ft.Parts.Item[1].AddXY(v_x, v_y, EmptyParam);
      Ft.Update(EmptyParam, EmptyParam);
      Result:=True;
    end;
    else begin
      IsComplete:=True;
      Result:=False;
    end;
  end;
end;

procedure TFrame_DrawShape.SetComplete;
begin
  IsComplete:=True;
  Ft:=nil;
  ValueList.Items.Clear;
end;

procedure TFrame_DrawShape.AddPointBtnClick(Sender: TObject);
var
  v_x, v_y:Double;
  aStr:string;
  Seed:Double;
begin
  Seed:=MyGIS.GMapTools.MapX.Bounds.Width/8;
  {分析當前圖形是否已經生成,如果已經生成,應該追加或修改節點,否則創建圖形}
  if Ft=nil then
  begin
    if not IsComplete then
      WarningAbort('系統錯誤', '對象未被創建卻標志沒有完成!');
    GetInputPointValue(v_x, v_y);
    Ft:=CreateShape(v_x, v_y);
    aStr:='('+IntToStr(ValueList.Items.Count+1)+') X:'+FloatToStr(v_x)+',Y:'+FloatToStr(v_y);
    ValueList.Items.Add(aStr);
    GoToFeature(MyGIS.GMapTools.MapX, Ft, True, Seed);
  end
  else if not IsComplete then
  begin
    if not ShapeCanAddPoint(Ft, 1) then
      WarningAbort('提示', '該圖形不允許增加點!');
    {分析是否已經完成圖形編輯,如果已經完成,則清空列表,并設置Ft為空;
    如果沒有完成編輯,則應該追加或修改節點。}
    GetInputPointValue(v_x, v_y);
    if not AddPointToShape(v_x, v_y) then Exit;
    aStr:='('+IntToStr(ValueList.Items.Count+1)+') X:'+FloatToStr(v_x)+',Y:'+FloatToStr(v_y);
    ValueList.Items.Add(aStr);
    GoToFeature(MyGIS.GMapTools.MapX, Ft, True, Seed);
  end;
  if IsComplete then
  begin
    Ft:=nil;
    ValueList.Items.Clear;
  end;
  {完成該點輸入,返回到X坐標編輯框}
  XEdit.SetFocus;
end;


procedure TFrame_DrawShape.GetInputPointValue(var v_x, v_y: Double);
var
  pt:Point;
begin
  if CheckBox1.Checked then
  begin
    if ValueList.ItemIndex=-1 then
      WarningAbort('提示', '請選擇相對的點!');
    pt:=Ft.Parts.Item[1].Item[ValueList.ItemIndex];
    v_x:=pt.X+XEdit.Value;
    v_y:=pt.Y+YEdit.Value;
  end
  else
  begin
    v_x:=XEdit.Value;
    v_y:=YEdit.Value;
  end;
end;

procedure TFrame_DrawShape.LoadFeaturePoints(aFt: Feature);

var
  i:Integer;
  aStr:string;
  pt:Point;

  procedure AddPointToList;
  begin
    aStr:='('+IntToStr(i)+') X:'+FloatToStr(pt.X)+',Y:'+FloatToStr(pt.Y);
    ValueList.Items.Add(aStr);
  end;
  
begin
  ValueList.Items.BeginUpdate;
  try
    ValueList.Items.Clear;
    case aFt.type_ of
      miFeatureTypeSymbol,
      miFeatureTypeText:begin
        pt:=aFt.Point;
        AddPointToList;
      end;
      else begin
        for i:=1 to aFt.Parts.Item[1].Count do
        begin
          pt:=aFt.Parts.Item[1].Item[i];
          AddPointToList;
        end;
      end;
    end;
  finally
    ValueList.Items.EndUpdate;
  end;
end;

procedure TFrame_DrawShape.DeletePointBtnClick(Sender: TObject);
var
  Index:Integer;
begin
  if Ft<>nil then
  begin
    if ValueList.ItemIndex=-1 then
      WarningAbort('提示', '請選擇要刪除的點!');
    if not ShapeCanDeletePoint(Ft, 1) then
      WarningAbort('提示', '該圖形不允許刪除點!');
    Index:=ValueList.ItemIndex;
    Ft.Parts.Item[1].Remove(Index+1);
    Ft.Update(EmptyParam, EmptyParam);
    LoadFeaturePoints(Ft);
    ValueList.ItemIndex:=min(Index, ValueList.Count-1);
  end;
end;

procedure TFrame_DrawShape.ValueListClick(Sender: TObject);
var
  pt:Point;
begin
  if ValueList.ItemIndex=-1 then Exit;
  pt:=GetShapePoint(Ft, 1, ValueList.ItemIndex+1);
  XEdit.Value:=pt.X;
  YEdit.Value:=pt.Y;
end;

procedure TFrame_DrawShape.EditPointBtnClick(Sender: TObject);
var
  Index:Integer;
  aStr:string;
  pt:Point;
begin
  if Ft<>nil then
  begin
    Index:=ValueList.ItemIndex;
    if Index=-1 then
      WarningAbort('提示', '請選擇要修改的點!');
    pt:=GetShapePoint(Ft, 1, Index+1);
    pt.Set_(XEdit.Value, YEdit.Value);
    Ft.Update(EmptyParam, EmptyParam);
    aStr:='('+IntToStr(Index)+') X:'+XEdit.Text+',Y:'+YEdit.Text;
    ValueList.Items[Index]:=aStr;
  end;
end;

procedure TFrame_DrawShape.InsertPointBtnClick(Sender: TObject);
var
  Index:Integer;
begin
  if Ft<>nil then
  begin
    if not ShapeCanAddPoint(Ft, 1) then
      WarningAbort('提示', '該圖形不允許插入點!');
    if ValueList.ItemIndex=-1 then
      WarningAbort('提示', '請選擇一個點要前插的點!');
    Index:=ValueList.ItemIndex;
    Ft.Parts.Item[1].AddXY(XEdit.Value, YEdit.Value, Index+1);
    ft.Update(EmptyParam, EmptyParam);
    LoadFeaturePoints(Ft);
    ValueList.ItemIndex:=Index;
  end;
end;

procedure TFrame_DrawShape.ApplyOffestBtnClick(Sender: TObject);
begin
  CheckEditLayer;
  OffestShapes(EditLayer.Selection, XOffestEdit.Value, YOffestEdit.Value);
end;

procedure TFrame_DrawShape.XOffestEditKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key=vk_return then YOffestEdit.SetFocus;
end;

procedure TFrame_DrawShape.YOffestEditKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key=vk_return then
  begin
    ApplyOffestBtnClick(ApplyOffestBtn);
    XOffestEdit.SetFocus;
  end;
end;

procedure TFrame_DrawShape.BitBtn1Click(Sender: TObject);
var
  i:Integer;
  ft:Feature;
  mstyle:Style;
begin
  CheckEditLayer;
  ft:=GetFirstShapeInSelction(EditLayer.Selection, miFeatureTypeSymbol);
  if ft<>nil then
    mstyle:=ft.Style.Clone
  else
    mstyle:=CoStyle.Create;
  if not mstyle.PickSymbol then Exit;
  for i:=1 to EditLayer.Selection.Count do
  begin
    ft:=EditLayer.Selection.Item[i];
    if ft.type_=miFeatureTypeSymbol then
    begin
      ft.Style:=mstyle;
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure TFrame_DrawShape.BitBtn2Click(Sender: TObject);
var
  i:Integer;
  ft:Feature;
  mstyle:Style;
begin
  CheckEditLayer;
  ft:=GetFirstShapeInSelction(EditLayer.Selection, miFeatureTypeLine);
  if ft<>nil then
    mstyle:=ft.Style.Clone
  else
    mstyle:=CoStyle.Create;
  if not mstyle.PickLine then Exit;
  for i:=1 to EditLayer.Selection.Count do
  begin
    ft:=EditLayer.Selection.Item[i];
    if ft.type_=miFeatureTypeLine then
    begin
      ft.Style:=mstyle;
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;
end;

procedure TFrame_DrawShape.BitBtn3Click(Sender: TObject);
var
  i:Integer;
  ft:Feature;
  mstyle:Style;
begin
  CheckEditLayer;
  ft:=GetFirstShapeInSelction(EditLayer.Selection, miFeatureTypeRegion);
  if ft<>nil then
    mstyle:=ft.Style.Clone
  else
    mstyle:=CoStyle.Create;
  if not mstyle.PickRegion then Exit;
  for i:=1 to EditLayer.Selection.Count do
  begin
    ft:=EditLayer.Selection.Item[i];
    if ft.type_=miFeatureTypeRegion then
    begin
      ft.Style:=mstyle;
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;  
end;


procedure TFrame_DrawShape.BitBtn4Click(Sender: TObject);
var
  i:Integer;
  ft:Feature;
  mstyle:Style;
begin
  CheckEditLayer;
  ft:=GetFirstShapeInSelction(EditLayer.Selection, miFeatureTypeText);
  if ft<>nil then
    mstyle:=ft.Style.Clone
  else
    mstyle:=CoStyle.Create;
  if not mstyle.PickText then Exit;
  for i:=1 to EditLayer.Selection.Count do
  begin
    ft:=EditLayer.Selection.Item[i];
    if ft.type_=miFeatureTypeText then
    begin
      ft.Style:=mstyle;
      ft.Update(EmptyParam, EmptyParam);
    end;
  end;  
end;

procedure TFrame_DrawShape.EditFeature(aFt: Feature);
begin
  SetComplete;

  ValueList.Items.Clear;
  XEdit.Value:=0;
  YEdit.Value:=0;
  CheckBox1.Checked:=False;

  Ft:=aFt;
  LoadFeaturePoints(Ft);
  case Ft.type_ of
    miFeatureTypeRegion,
    miFeatureTypeLine:begin
      IsComplete:=False;
    end;
    else begin
      IsComplete:=True;
    end;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
ww亚洲ww在线观看国产| 色综合欧美在线视频区| 日韩激情在线观看| 免费在线观看精品| 蜜桃在线一区二区三区| 国内外成人在线| 国产精品一区二区三区网站| 国产精品乡下勾搭老头1| jlzzjlzz亚洲女人18| 在线视频一区二区免费| 日韩一级黄色大片| 国产三级精品三级在线专区| 亚洲美女免费视频| 香蕉影视欧美成人| 成人中文字幕在线| 欧美福利电影网| 国产精品成人免费精品自在线观看| 亚洲人成7777| 国产iv一区二区三区| 欧美日韩精品一区二区三区| 久久久国产精品午夜一区ai换脸| 亚洲人成人一区二区在线观看| 五月婷婷综合激情| 99久久免费精品| xfplay精品久久| 免费高清视频精品| 欧美性色综合网| 一区二区三区电影在线播| 国产精品一区久久久久| 日韩一区二区麻豆国产| 一区二区高清视频在线观看| 国产精品主播直播| 精品福利视频一区二区三区| 婷婷国产v国产偷v亚洲高清| 91成人免费在线| 午夜欧美在线一二页| 欧美网站一区二区| 亚洲一区二区三区四区中文字幕| 成人久久视频在线观看| 国产欧美日韩精品一区| 国产黄色精品网站| 中文字幕在线一区免费| 国产成人综合视频| 亚洲人亚洲人成电影网站色| 粉嫩高潮美女一区二区三区| 国产精品无码永久免费888| 国产精品99久久久久久似苏梦涵 | 欧美一级高清大全免费观看| 性感美女极品91精品| 日韩视频在线永久播放| 国产麻豆91精品| 欧美巨大另类极品videosbest | 亚洲一级电影视频| 欧美午夜一区二区三区免费大片| 亚洲成a人在线观看| 精品剧情v国产在线观看在线| 国产美女娇喘av呻吟久久| 久久久久久久免费视频了| 91麻豆自制传媒国产之光| 一区二区三区不卡在线观看 | 日韩高清不卡一区二区三区| 日韩一级大片在线| av亚洲精华国产精华精| 奇米色777欧美一区二区| 亚洲人成7777| 久久丝袜美腿综合| 欧美一级理论性理论a| 91丨porny丨最新| 国内精品伊人久久久久av一坑| 一区二区三区中文字幕电影| 日韩欧美资源站| 在线亚洲人成电影网站色www| 美女在线观看视频一区二区| 亚洲视频中文字幕| 中文字幕在线免费不卡| 久久免费美女视频| 精品蜜桃在线看| 日韩一区二区影院| 日韩精品一区二| 欧美一区二区性放荡片| 欧美色爱综合网| 在线观看国产日韩| 欧美无人高清视频在线观看| 欧美唯美清纯偷拍| 欧美吞精做爰啪啪高潮| 99久久婷婷国产综合精品| 成人av资源站| 日本韩国视频一区二区| 色婷婷国产精品| 精品视频一区二区三区免费| 欧美少妇bbb| 欧美一区二区日韩| 精品久久久久久久一区二区蜜臀| 欧美成人一区二区三区| 久久久久久久久久美女| 中文字幕制服丝袜成人av | 国产乱码精品一区二区三区五月婷| 免费三级欧美电影| 国产麻豆视频一区| 色综合久久久久久久久| 欧美高清精品3d| 久久午夜老司机| 亚洲成a天堂v人片| 丁香天五香天堂综合| 91福利资源站| 国产三级欧美三级日产三级99 | 国产suv精品一区二区883| 99国产精品99久久久久久| 欧美日韩电影在线| 国产精品日日摸夜夜摸av| 亚州成人在线电影| 91蜜桃视频在线| 精品99999| 婷婷久久综合九色综合伊人色| 成人在线综合网| 国产精选一区二区三区| 国产精品中文字幕日韩精品| 成人av在线影院| 久久综合色之久久综合| 亚洲电影一级黄| 欧美人与性动xxxx| 午夜不卡av免费| 欧美专区在线观看一区| 亚洲自拍偷拍图区| 色美美综合视频| 亚洲精选视频在线| 精品第一国产综合精品aⅴ| 国产精品传媒视频| 亚洲激情男女视频| 日韩午夜av电影| 午夜精品久久一牛影视| 69成人精品免费视频| 五月综合激情网| 日韩欧美亚洲国产另类| 精品一区二区影视| 国产日产欧美一区二区三区| 国产高清不卡一区| 亚洲欧美另类久久久精品2019| 99精品久久只有精品| 一区二区三区欧美久久| 欧美日本国产一区| 国产乱妇无码大片在线观看| 国产精品毛片无遮挡高清| 色综合天天综合| 蜜臀久久久99精品久久久久久| 日韩精品一区二区三区四区| 成人性生交大片| 丝袜美腿亚洲色图| 中文字幕一区免费在线观看| 欧美无人高清视频在线观看| 国产精选一区二区三区| 婷婷国产v国产偷v亚洲高清| 久久精品一区二区| 制服丝袜亚洲色图| 91伊人久久大香线蕉| 久久er精品视频| 亚洲一卡二卡三卡四卡五卡| 国产欧美中文在线| 精品国产髙清在线看国产毛片| 成人av片在线观看| 国产福利一区二区三区视频| 日韩专区一卡二卡| 亚洲丝袜另类动漫二区| 中文字幕国产一区二区| 精品久久久久久久久久久久包黑料 | 亚洲精品在线免费播放| 欧美美女bb生活片| 在线观看免费成人| 成人av高清在线| 91啪九色porn原创视频在线观看| 狠狠狠色丁香婷婷综合激情| 免费精品视频在线| 日韩精品一级二级 | 国产婷婷色一区二区三区在线| 91精品国产一区二区人妖| 欧美久久久影院| 欧美一级精品在线| ww久久中文字幕| 国产精品丝袜黑色高跟| 亚洲欧美国产毛片在线| 一区二区三区 在线观看视频| 一区二区三区四区亚洲| 亚洲成人免费影院| 免费观看成人av| 成人毛片视频在线观看| 91丨九色丨蝌蚪富婆spa| 欧美中文字幕亚洲一区二区va在线| 欧美网站大全在线观看| 精品成a人在线观看| ●精品国产综合乱码久久久久| 亚洲一区二区3| 国产一区欧美日韩| 91丨porny丨首页| 亚洲精品一区二区三区福利 | 99久久国产综合色|国产精品| 欧美日韩高清一区| 中文字幕在线观看不卡视频| 亚洲.国产.中文慕字在线| 国产成人精品免费网站| 欧美一卡2卡3卡4卡|