阅读:3599回复:18
请教在选定区域查询显示图元功能
各位大虾,我想实现下面这样的功能
选定一个区域,并能够在该区域实现地图信息的查询功能(查询MAPINFO中包含的信息) 并将其显示 我想将查询功能做在一个单独的窗体中 请各位大虾给点思路和建议 谢谢 <img src="images/post/smile/dvbbs/em09.gif" /> |
|
|
1楼#
发布于:2003-08-27 10:21
Private Sub Form_Load()
Dim lyr As Layer Dim ftr As Feature Dim Ds As Dataset Dim Fld As MapXLib.Field Dim temp As Integer temp = 12345 'MsgBox " fMainForm.Map1.DataSets.Count " & fMainForm.Map1.DataSets.Count 'MsgBox " fMainForm.Map1.DataSetGeoField " & fMainForm.Map1.DataSetGeoField 'MsgBox " fMainForm.Map1.DataBindings.Count " & fMainForm.Map1.DataBindings.Count For Each lyr In fMainForm.Map1.Layers If lyr.Selection.Count <> 0 Then fMainForm.Map1.DataSets.Add miDataSetLayer, lyr, "Temporary DataSet" For Each ftr In lyr.Selection lyr.BeginAccess miAccessReadWrite 'lyr.BeginAccess miAccessRead MsgBox " lyr.DataSets.Count " & lyr.DataSets.Count For Each Ds In lyr.DataSets ListData.AddItem " Ds.Name " & Ds.Name ListData.AddItem " Ds.Layer " & Ds.Layer If XYPointRef = True Then '±£Áôµ±Ç°²ãµÄÃû×Ö LyrStr = Ds.Layer End If ' 'Ds.AddField "name", miTypeString ' For Each Fld In Ds.Fields If Ds.Value(ftr.FeatureKey, Fld.Name) <> vbNull Then ListData.AddItem Fld.Name & " : " & Ds.Value(ftr.FeatureKey, Fld.Name) End If Next ListData.AddItem " " ListData.AddItem " " ListData.AddItem " " Dim str As String str = " " ' Grid1.Rows = Ds.RowCount ' Grid1.Cols = Ds.Fields.Count For j = 1 To Ds.RowCount For i = 1 To Ds.Fields.Count If Ds.Value(j, i) <> vbNull Then str = str + " " + CStr(Ds.Value(j, i)) End If ' Grid1.TextArray(Grid1.Cols * j + i) = str Next List.AddItem str str = " " 'Text.Text = Text.Text + " \n" + str Next Next lyr.BeginAccess miAccessEnd Next fMainForm.Map1.DataSets.Remove "Temporary DataSet" End If Next End Sub // 这个你给你参考一下 |
|
2楼#
发布于:2003-08-27 10:41
thank you very much!!!
非常感谢斑竹 |
|
|
3楼#
发布于:2003-08-27 10:53
斑竹,你用的ListData是什么控件啊?
为什么提示没有方法AddItem啊? 望解答,谢谢啊!~ |
|
|
4楼#
发布于:2003-08-27 13:20
呵呵,不好意思,斑竹
我找到那个东东了,我是个新入行的小菜鸟 谢谢斑竹的指点 |
|
|
5楼#
发布于:2003-08-27 14:11
If XYPointRef = True Then '±£á?μ±?°2?μ???×?
LyrStr = Ds.Layer End If 斑竹,这个句子的意思和作用能帮忙解释一下吗? |
|
|
6楼#
发布于:2003-08-27 14:18
楼上的要 代码 吗?
给你一段 delphi 的,你看看吧! procedure TMapForm.band1Click(Sender: TObject); var ds: CmapXdataset; cols: CMapXFields; begin mapform.ADOQuery2.Close; mapform.ADOQuery2.SQL.Clear; mapform.ADOQuery2.SQL.Add('select * from Asia'); mapform.ADOQuery2.Open; Map1.Datasets.RemoveAll; showmessage('所有数据集清空'); ds:=map1.datasets.add(midatasetado,adoquery2.Recordset ,'asia' ,EmptyParam,EmptyParam,map1.Layers.Item('asia'),EmptyParam,EmptyParam); showmessage('成功绑定'); ds.Themes.RemoveAll; showmessage('所有专题层清空'); cols := CoFields.Create; cols.Add('pop_0_14', 'pop_0_14', EmptyParam, EmptyParam); cols.Add('pop_15_64', 'pop_15_64', EmptyParam, EmptyParam); cols.Add('pop_65_plus', 'pop_65_plus', EmptyParam, EmptyParam); ds.Themes.Add(miThemePieChart , cols, 'My Bar Theme', EmptyParam); ds.Themes.Add(miThemeRanged,'totpop','Myranges Theme',EmptyParam); end; '' mapform.ADOQuery2.Close; '' mapform.ADOQuery2.SQL.Clear; '' mapform.ADOQuery2.SQL.Add('select * from Asia'); '' mapform.ADOQuery2.Open; '' ''这几句是负责连接数据库,有一些设置不在程序里设置,总之这几个就是选出要的数据并且放到adoqurey2里面 ''Map1.Datasets.RemoveAll; '' showmessage('所有数据集清空'); ''这一句是把tmap控件里的所有数据帮定清空并且给出提示 ''ds:=map1.datasets.add(midatasetado,adoquery2.Recordset ,'asia' '' ,EmptyParam,EmptyParam,map1.Layers.Item('asia'),EmptyParam,EmptyParam); ''这一句就是数据帮定了,你看第二个参数,数据为adoquery2.Recordset |
|
|
7楼#
发布于:2003-08-27 15:22
呵呵,谢谢袁兄,可惜我看不动delphi的代码!~
不过我能够在这里得到大家的指点 感到非常的高兴 |
|
|
8楼#
发布于:2003-08-27 15:27
各位,我想请教一个和MAPX关系不大的问题
我想在主窗体的地图上选定一定的区域 然后将查询出的信息在弹出式的窗体中显示 麻烦各位给点思路 我是用VB的,呵呵,基础很差,望各位谅解 |
|
|
9楼#
发布于:2003-08-27 15:37
呵呵,我也不懂delphi啊
等大虾们来给解答吧 |
|
|
上一页
下一页