|
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等数据库,读取属性数据
|