MapX+Delphi,取得鼠标经过(或点击)MapX时的对象名称。不要:currentTool := miSelectTool(100分)

  • 主题发起人 主题发起人 我心飞翔
  • 开始时间 开始时间

我心飞翔

Unregistered / Unconfirmed
GUEST, unregistred user!
那你什么意思?
是想自己做个工具,然后鼠标点击时MapX时寻找对象的名称。
 
就是鼠标一点击MaxP,就知道点击的对象名称。
 
是呀,既然你不要它默认的miSelectTool 工具,你自己可以做个工具,然后在工具使用时寻找对象的名称就行了。
 
在图层里一层一层的找?
 
这个我知道
在tooluserd事件里
var obj:variant;
pt:variant;
i:integer;
name:string;
begin

pt:=createoleobject('mapx.point.4');
pt.set(x1,y1);//x1,y1参数在方法里已经有了
for i:=1 to features.countdo

begin

obj:=features.item(i);
name:=obj.name;
end;

end;


 
呵呵,yplusplus你的features从哪里来,必须使用寻找语句
 
是呀。features???
 
TO yplusplus:
加我QQ:171358174。谢谢
 
TO yostgxf:
加我QQ:171358174。谢谢
 
请给点思路!!谢谢
 
我给你代码吧,你等一下
 
谢谢。
zzd168@126.com
 
1。定义工具
Const miMPointSelect=100;//数字在1-999之间随便取
Map1.CreateCustomTool(miMPointSelect, miToolTypePoint, miSelectCursor);//定义工具
2。选择工具
Map1.currentTool:=miMPointSelect;
3.使用工具
procedure TForm1.Map1ToolUsed(Sender: TObject;
ToolNum: Smallint;
X1, Y1, X2, Y2,Distance:do
uble;
Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
var
ftrsFinds : Features;
Newobj : Feature;
pt : Point;
i,j:integer;
begin

pt:=coPoint.Create;
case ToolNum of
miMPointSelect: begin

pt.Set_(X1, Y1);
for j:= Map1.Layers.Countdo
wnto 1do

begin

ftrsFinds := MapX.Layers.Item(j).SearchAtPoint(pt);
for i:=1 to ftrsFinds.countdo

begin

Newobj:=ftrsFinds.item(i);
//这里的Newobj就是你鼠标点击找到的Feature
end;

end;

end;



 
多人接受答案了。
 
后退
顶部