阅读:2704回复:9
小弟初学mo,问几个很菜的问题
我用vb+mo.新建了个图层,然后画了些点保存为shape文件,那我怎么能选择点,然后删除掉这些点了?
|
|
1楼#
发布于:2004-07-09 23:13
<P>删除点、线、对象</P><P>private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim P1 As MapObjects2.Point Const D1 = 3 Dim recset As MapObjects2.Recordset Dim ans As Variant Set P1 = Map1.ToMapPoint(X, Y) '¾àÀë²éÕÒ£» Set recset = Map1.Layers(0).SearchByDistance(P1, D1, "") 'ɾ³ý0²ãµÄ¶ÔÏó If Not recset.EOF Then Map1.FlashShape recset.Fields("shape").Value, 3 ans = MsgBox("Ҫɾ³ýÕâ¸öÌØÕ÷?x=" ; X ; "y=" ; Y, vbYesNo, "MOʾÀý") If ans = vbYes Then If recset.Updatable Then recset.Edit recset.StartTransaction recset.Delete recset.MoveNext recset.StopEditing Map1.Refresh Else MsgBox "¼Ç¼¼¯²»¿ÉÐ޸ġ£" End If End If Else MsgBox "ûÓеã»÷ÌØÕ÷¡£x=" ; X ; "y=" ; Y End If End Sub</P> |
|
|
2楼#
发布于:2004-07-09 13:35
d
|
|
3楼#
发布于:2004-06-21 21:13
<img src="images/post/smile/dvbbs/em08.gif" />
|
|
4楼#
发布于:2004-06-14 21:22
<P>我刚刚仔细看了一下,你的那个方法是通过在地图上点击来增加地物,</P><P>但是我要通过在TRAckinglayer上画点、线、面实现保存,我能实现保存多边形。</P><P>可是点、线、矩形、圆怎么办?我不明白!</P>
|
|
5楼#
发布于:2004-06-14 19:30
<P>我待会做一下!</P><P>我现在对mo就算是熟悉不少函数的用法!也真想有个具体的项目作!</P><P>前些天自己用它做了个类似的Cad软件!</P><P>大家可以交流一下嘛!</P>
|
|
6楼#
发布于:2004-06-14 16:40
另存图层就ok了,不过需要判断图层类型
|
|
|
7楼#
发布于:2004-06-14 14:29
<P>tui312:</P><P>我想问你一个问题啊-------你怎么实现保存点层的阿?能告诉我吗?我只能保存多边形文件。</P><P>这个问题我前天也跟你一样,很好解决.</P><P>就是你这样定义</P><P>Dim polyTracked As MapObjects2.Point</P><P>Private Sub DrawPoint(x As Single, y As Single)
Dim id As String, manNo As String, manName As String Dim sql As String Dim R As String 'Draw a new point... Set polyTracked = Map1.ToMapPoint(x, y) '<FONT color=#c43ca9>得到屏幕上的点,这个好像就是你不能得到点图的原因</FONT> '...then add the new polygon to the shapefile. recsNew.AddNew Set recsNew.Fields("Shape").Value = polyTracked recsNew.Fields("ID").Value = reno </P><P> recsNew.Fields("no").Value = manNo recsNew.Fields("name").Value = manName recno = recno + 1 recsNew.Update recsNew.StopEditing Map1.Refresh </P><P>End Sub </P> |
|
8楼#
发布于:2004-06-14 13:58
<P>先判断这个图层是不是点层?如果是点层,就用到以下代码! </P><P> Set Recset = Map1.Layers(legend1.getActiveLayer).SearchByDistance(pdel, D1, "")——得到选择的点, legend1.getActiveLayer是选择活动图层。
If Not Recset.EOF Then Map1.FlashShape Recset.Fields("shape").Value, 3-------------闪动 Ans = MsgBox("要删除这个特征?", vbYesNo, "MO示例") If Ans = vbYes Then If Recset.Updatable Then '特征是否允许被删除 Recset.edit------------------对数据库表的操作,这是固定格式。 Recset.Delete Recset.MoveNext Recset.StopEditing Map1.Refresh Else MsgBox "记录集不可修改。" End If End If Else MsgBox "没有点击特征。" End If</P><P>我想问你一个问题啊-------你怎么实现保存点层的阿?能告诉我吗?我只能保存多边形文件。</P><P>我的MSN是<a href="mailttui312@21cn.com" target="_blank" >tui312@21cn.com</A>.有空联系!我很想知道那个问题,</P> |
|
9楼#
发布于:2004-06-14 10:14
有人关心下吗?
|
|