C.如何使用?在Map对象的ToolUsed事件的ToolNum参数为当前所激活的工具使当前操作指向某行为:MainMap.CurrentTool=工具句柄号,如放大:MainMap.CurrentTool=miZoomInTool,移动图元:MainMap.CurrentTool=MoveFeature操作具体的工具句柄时,执行该捕捉到的工具句柄的代码:在ToolUsed事件中:Select Case ToolNumCase MoveFeature“执行代码End Select删除图元:Lyr.DeleteFeatureFtr三、查询1、属性查找。Find、Search方法:注意的是Find方法只支持TAB表文件,不支持空间数据表。Find:与FoxPro中Locate定位命令想类似。Search:支持SQL语句。写法:仅指SQL语句的WHERE部分,且From语句中只能有一个表一仅对单表进行操作:Select*fromLayerNameWHEREIDLIKE“%北京%”示例:A、查找DimFtrsASMapXlib.Features“图元集合““%北京%”””)SETFtrs=Lyr.Search(“IDLIKEForI=ltoFtrs.Count“执行语句NextB、高亮显示“将当前查询所得的结果集全部高亮显示(隐含执行:Lyr.Selection.Replace FtrsLyr.ClearSelection语句)一一加入selection集合闪烁:不能用Selection,否则会对整个屏幕进行整个刷新(抖动)。使用更新Style的方法进行选定图元的闪烁。记载图元的老样式:SetOldsytle=Ftr.StyleLyr.Selection.AddFtrs“将当前查询所得的结果集添加到已有的结果集中,再全部高亮显示C、对查询的结果集进行属性修改示例程序:完成的是Professional中信息工具功能
C. 如何使用? 在 Map 对象的 ToolUsed 事件的 ToolNum 参数为当前所激活的工具 使当 前操作指向某行为:MainMap.CurrentTool=工具句柄号,如放大:MainMap.CurrentTool= miZoomInTool,移动图元:MainMap.CurrentTool=MoveFeature 操作具体的工具句柄时,执行该捕捉到的工具句柄的代码: 在 ToolUsed 事件中: Select Case ToolNum Case MoveFeature ‘执行代码 End Select 删除图元:Lyr.DeleteFeature Ftr 三、查询 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.DatasetDim Flds AS MapXlib.FieldsDim Ftr AS MapXlib.FeatureSet Lyr=MainMap.Layers.Item(LayerName)Set ds=Lyr.Datasets.item(1)Set Flds=ds.Fields“查找SETFtrs=Lyr.Search(“IDLIKE《““%北京%”》”)If Ftrs.count= then exit sub“读取属性值ForI=lto Ftrs.CountSet Ftr=Ftrs.Item(I)For j-l to Flds.count“字段列表FldsName(J)=F1ds.Item(J).NameLyr. KeyField=FldsName (J)“值列表ValueStr (I,J)=Ftr.KeyValueNextNext“修改属性MainMap.AuyoRedraw=FalseLyr.Editable-TrueFor j=1 to Flds. countLyr.KeyField=Flds.Item(J).NameFtrs. Item(j).KeyValue =ValueStr(J)更新值列表Ftrs.Item(j).Update TrueNextLyr.RefreshLyr.Editable-FalseMainMap.AuyoRedraw-True“修改样式Dim NewStyleAS MapXlib.StyleWithNewStyle设置样式End WithMainMap.AuyoRedraw=FalseLyr.Editable=True
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 With NewStyle ‘设置样式 End With MainMap.AuyoRedraw=False Lyr.Editable=True