|
legend1900 :
模拟MapInfo Professional 中InfoTool功能(还有问题) Private Sub Map1_DblClick() Dim strINFO As String Dim Lyrs As MapXLib.Layers Dim Lyr As MapXLib.Layer Dim Ftrs As MapXLib.Features Dim Ftr As MapXLib.Feature Dim blnHave As Boolean Dim lngFtrs As Long '\\选中的图元个数 Dim lngTab As Long '\\选中的图元所在的图层个数 If Map1.CurrentTool = miSelectTool Then For Each Lyr In Map1.Layers blnHave = False For Each Ftr In Lyr.Selection strINFO = strINFO & "Layer=" & Lyr.Name & ";" & "Name=" & Ftr.Name & Chr(13) & Chr(10) lngFtrs = lngFtrs + 1 blnHave = True Next If blnHave Then lngTab = lngTab + 1 Next strINFO = strINFO & lngFtrs & "个图元在" & lngTab & "个图层中" MsgBox strINFO End If End Sub 现在还只能选中一个图层的图元,professional是可以显示多个图层的信息的 顺便请教各位,这里应该如何实现?
legend1900:
呵呵,刚才试通拉 代码如下 Private Sub Map1_DblClick() Dim strINFO As String Dim Lyrs As MapXLib.Layers Dim Lyr As MapXLib.Layer Dim Ftrs As MapXLib.Features Dim Ftr As MapXLib.Feature Dim blnHave As Boolean Dim lngFtrs As Long '\\选中的图元个数 Dim lngTab As Long '\\选中的图元所在的图层个数 Dim objPoint As New MapXLib.Point objPoint.Set MapX, MapY '\\MapX和MapY为全局变量,记录当前鼠标点的真实地理位置(经纬度) If Map1.CurrentTool = miSelectTool Then For Each Lyr In Map1.Layers blnHave = False Set Ftrs = Lyr.SearchAtPoint(objPoint, miSearchResultAll) For Each Ftr In Ftrs strINFO = strINFO & "Layer=" & Lyr.Name & ";" & "Name=" & Ftr.Name & Chr(13) & Chr(10) lngFtrs = lngFtrs + 1 blnHave = True Next If blnHave Then lngTab = lngTab + 1 Next strINFO = strINFO & lngFtrs & "个图元在" & lngTab & "个图层中" MsgBox strINFO End If End Sub |