C. 如何使用?
在Map对象的ToolUsed事件的ToolNum参数为当前所激活的工具
使当
前操作指向某行为:MainMap.CurrentTool=工具句柄号,如放大:MainMap.CurrentTool=miZoomInTool,移动图元:MainMap.CurrentTool=MoveFeature
操作具体的工具句柄时,执行该捕捉到的工具句柄的代码:
在ToolUsed事件中:
Select Case ToolNum
Case MoveFeature
‘执行代码
End Select
删除图元:Lyr.DeleteFeature Ftr
三、查询
发表时间: 2002-07-30 14:21
1、 属性查找。Find、Search方法:注意的是Find方法只支持TAB表文件,不支持空间数据表。
Find :与FoxPro中Locate定位命令想类似。
Search:支持SQL语句。写法:仅指SQL语句的WHERE 部分,且From语句中只能有一个表——仅对单表进行操作:Select * from LayerName WHERE ID LIKE “%北京%”
示例:
A、查找
Dim Ftrs AS MapXlib.Features ‘图元集合
SET Ftrs=Lyr.Search(“ID LIKE ““%北京%”””)
For I=1 to Ftrs.Count
‘执行语句
Next
B、高亮显示
Lyr.Selection.Replace Ftrs ‘将当前查询所得的结果集全部高亮显示(隐含执行:Lyr.ClearSelection语句)——加入selection集合
闪烁:不能用Selection,否则会对整个屏幕进行整个刷新(抖动)。使用更新Style的方法进行选定图元的闪烁。
记载图元的老样式:Set Oldsytle=Ftr.Style
Lyr.Selection.Add Ftrs ‘将当前查询所得的结果集添加到已有的结果集中,再全部高亮显示
C、对查询的结果集进行属性修改
示例程序:完成的是Professional中信息工具功能
Dim ds AS MapXlib.Dataset
Dim Flds AS MapXlib.Fields
Dim Ftr AS MapXlib.Feature
Set Lyr=MainMap.Layers.Item(LayerName)
Set ds=Lyr.Datasets.item(1)
Set Flds=ds.Fields
‘查找
SET Ftrs=Lyr.Search(“ID LIKE ““%北京%”””)
If Ftrs.count=0 then exit sub
‘读取属性值
For I=1 to Ftrs.Count
Set Ftr=Ftrs.Item(I)
For j=1 to Flds.count
FldsName(J)=Flds.Item(J).Name ‘字段列表
Lyr.KeyField=FldsName(J)
ValueStr(I,J)=Ftr.KeyValue ‘值列表
Next
Next
‘修改属性
MainMap.AuyoRedraw=False
Lyr.Editable=True
For j=1 to Flds.count
Lyr.KeyField= Flds.Item(J).Name
Ftrs.Item(j).KeyValue =ValueStr(J) ‘更新值列表
Ftrs.Item(j).Update True
Next
Lyr.Refresh
Lyr.Editable=False
MainMap.AuyoRedraw=True
‘修改样式
Dim NewStyle AS MapXlib.Style






