发表用户:legend1900
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=4&ID=6967
信息原始来源:legend1900

文章标题:模拟MapInfo Professional 中InfoTool功能

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