发表用户:讨论贴
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?BoardID=4&ID=2547
信息原始来源:James MapInfo技术论坛

文章标题:请教:如何读取feature的制定属性?

yinny

论坛上说有三种方法,其中一种是:由Layer对象的KeyField属性来设立要读取属性值的字段名。接着,由Feature对象的keyvalue读取此行的属性值。
能不能具体一点呢?谢谢!

shenji

我最近编东西也碰到这个问题,我是这样解决的。

Private Sub Map1_ToolUsed(ByVal ToolNum As Integer, ByVal x1 As Double, 
ByVal y1 As Double, ByVal x2 As Double, ByVal y2 As Double, 
ByVal Distance As Double, ByVal Shift As Boolean, ByVal Ctrl As Boolean, 
EnableDefault As Boolean)

Dim pnt As New Point
Dim pnts As New MapXLib.Point
Dim ftrs As Features
Dim ftr As Feature
Dim lyr As Layer
Dim strinfo As String
Dim flds As MapXLib.Fields
Dim fld As MapXLib.Field
Dim ds As MapXLib.Dataset

Select Case ToolNum
   
    Case 120                                              '自定义查询功能
      pnt.Set x1, y1
      For Each lyr In Map1.Layers
        Set ftrs = lyr.SearchAtPoint(pnt)
        If ftrs.Count > 0 Then
           strinfo = "layer name:" & lyr.Name & vbCrLf
           strinfo = strinfo & "feature name:" & ftrs.Item(1).Name & vbCrLf
           Set ds = Map1.DataSets.Add(miDataSetLayer, lyr)
           
           For Each fld In ds.Fields
              strinfo = strinfo & fld.Name & ":"
              Set lyr.KeyField = fld                    
              strinfo = strinfo & ftrs.Item(1).Keyvalue & vbCrLf 
  
           Next     注意:临时使用了keyfield属性,避免调人表的全部字段。
           
           MsgBox strinfo
           Exit For
        End If
      Next
      If ftrs.Count = 0 Then
         MsgBox "没有图元选中 "
      End If

上面的ftrs.Item(1).Keyvalue 即为图元在数据库中的属性

daiyujun


也是这样解决
但是要实现动态显示,还是用数据绑定比较好
最好用datasets.add 方法连接ADO,ODBC等数据库,读取属性数据