ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:958.86KB ,
资源ID:1013594      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1013594.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mo+vb程序设计报告.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

mo+vb程序设计报告.docx

1、mo+vb程序设计报告本科学生验证性实验报告姓名 学号 专业 GIS 班级 10地信 实验课程名称 GIS设计与开发 指导教师及职称 开课学期 2013 至 2014 学年 第一 学期上课时间 2013 年 12 月 15 日云南师范大学旅游与地理科学学院地理信息系统系一、实验设计实验名称:条件查询 实验时间:2013-12-15小组合作:是()否()小组成员:无1、 实验内容(含实验原理介绍):1.1设计软件界面1.2进行编程并进行调试1.3对程序进行优化并进行调试1.4实现如下界面功能:功能解析:1.4.1能够通过点击条件组合得到查询条件,基于MO提供的空间关系进行查询,并显示查询结果;1

2、.4.2能够根据查询结果得到属性表,并显示查询结果;1.4.3根据查询出来的结果进行空间定位与显示。2、 实验目的:学会使用SearchExpression方法,能利用这种方法进行条件查询,并能将查询结果进行显示,能根据查询记录定位、显示地理要素。3、 设计实验相关情况介绍(包含使用软件以及实验设备等):(1)使用软件:MO软件和VB软件(2)实验设备:计算机、Windows7系统、键盘、鼠标等。4、 实验过程、方法步骤: 4.1设计软件界面首先新建一个查询窗体,并设计其界面然后添加一个窗体,在添加一个按钮,作为空间查询点击的入口按钮4.2进行编程并进行调试4.2.1在主窗体中点击“条件查询”

3、,显示条件查询窗体代码如下:Private Sub Command1_Click()Form1.ShowEnd Sub4.2.2使地图的各图层的名在下拉菜单combo1中显示,并使下拉菜单字段名在list1中显示,即得到如下结果的功能代码如下:使地图的各图层的名在下拉菜单combo1中显示Private Sub Form_Load()Dim plyr As New MapObjects2.MapLayerFor Each plyr In Form2.Map1.Layers Combo1.AddItem plyr.NameNext plyrCombo1.ListIndex = 0Text1.Te

4、xt = End Sub使下拉菜单字段名在list1中显示Private Sub Combo1_Click()Set lyr = Form2.Map1.Layers(Combo1.ListIndex)Set precord = lyr.RecordsDim ptable As New MapObjects2.TableDescSet ptable = precord.TableDesclist1.ClearDim i As IntegerFor i = 0 To ptable.FieldCount - 1 list1.AddItem ptable.FieldName(i)Next iEnd S

5、ub4.2.3在list1中点击属性,在list2显示属性值,即得到如下结果的功能代码如下:在list1中点击属性,在list2显示属性值Private Sub list1_Click()Dim pfldname As Stringpfldname = list1.List(list1.ListIndex)list2.Clearprecord.MoveFirstWhile Not precord.EOF list2.AddItem precord.Fields(pfldname).ValueAsString precord.MoveNextWendEnd Sub4.2.4在text1中获得查询

6、条件(即双击list1字段名,双击list2字段名,然后在text1中显示,单击表达式构造符号按钮在text1中显示),即得到如下结果的功能代码如下:双击list1字段名,在text中显示Private Sub list1_DblClick() Text1.Text = Text1.Text + list1.List(list1.ListIndex)End Sub双击list2字段名,在text中显示Private Sub list2_DblClick() Text1.Text = Text1.Text + list2.List(list2.ListIndex)End Sub单击各个符号在te

7、xt1中进行显示Private Sub Command5_Click()Text1.Text = Text1.Text + Command5.CaptionEnd SubPrivate Sub Command6_Click()Text1.Text = Text1.Text + Command5.captionEnd SubPrivate Sub Command7_Click()Text1.Text = Text1.Text + and End SubPrivate Sub Command8_Click()Text1.Text = Text1.Text + Command8.captionEnd

8、 SubPrivate Sub Command9_Click()Text1.Text = Text1.Text + Command9.captionEnd SubPrivate Sub Command10_Click()Text1.Text = Text1.Text + or End SubPrivate Sub Command11_Click()Text1.Text = Text1.Text + Command11.captionEnd SubPrivate Sub Command12_Click()Text1.Text = Text1.Text + Command12.captionEnd

9、 SubPrivate Sub Command13_Click()Text1.Text = Text1.Text + not End SubPrivate Sub Command14_Click()Text1.Text = Text1.Text + Command14.captionEnd SubPrivate Sub Command15_Click()Text1.Text = Text1.Text + Command15.captionEnd SubPrivate Sub Command16_Click()Text1.Text = Text1.Text + like End Sub4.2.5

10、获得查询条件,进行查询并在地图中进行显示以及获得属性表,得到如下结果代码如下:Public record As MapObjects2.Recordset 定义查询的记录集Public ponoff As Boolean 定义一个开关,(由于在差un提运行时就开始查询,所以要定义开关,在窗体运行时处于关状态,点击查询时才开始查询)窗体运行时开关处于关状态Private Sub Form_Load()ponoff = FalseEnd Sub查询及其显示(由于AfterTrackingLayerDraw是Map的方法,所以应该在Map1下进行编辑代码)Private Sub Map1_After

11、TrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)If ponoff = True ThenSet record =Form2.Map1.Layers(Form1.Combo1.ListIndex).SearchExpression(Form1.Text1.Text) Dim psym As New MapObjects2.Symbol psym.Color = moRed Form2.Map1.DrawShape record, psymEnd IfEnd Sub点击查询时,属性表的显示Public Sub DisplaySelFeature(

12、) If Not record Is Nothing Then Dim tDesc As MapObjects2.TableDesc Dim i As Integer Set tDesc = record.TableDesc Dim recscount As Integer * 以下代码用来填充msgflexgrid Dim m As Integer Dim n As Integer record.MoveFirst Do While Not record.EOF record.MoveNext recscount = recscount + 1 Loop MsgBox recsCount F

13、orm1.MSFlexGrid1.Cols = tDesc.FieldCount + 1 Form1.MSFlexGrid1.Rows = recscount + 1 Form1.MSFlexGrid1.AllowUserResizing = flexResizeColumns Form1.MSFlexGrid1.Clear Form1.MSFlexGrid1.CellAlignment = flexAlignLeftCenter For i = 1 To tDesc.FieldCount Form1.MSFlexGrid1.ColWidth(i) = tDesc.FieldLength(i

14、- 1) * 72 Next i to filled the fields name into grid Form1.MSFlexGrid1.TextMatrix(0, 0) = 特征 ID For i = 1 To recscount Form1.MSFlexGrid1.TextMatrix(i, 0) = i Form1.MSFlexGrid1.CellAlignment = flexAlignLeftCenter Next i For i = 0 To tDesc.FieldCount - 1 Form1.MSFlexGrid1.TextMatrix(0, i + 1) = tDesc.

15、FieldName(i) Form1.MSFlexGrid1.ColAlignment(i) = flexAlignLeftCenter Form1.MSFlexGrid1.ColWidth(i) = 1200 Next i Form1.MSFlexGrid1.ColAlignment(0) = flexAlignCenterCenter Form1.MSFlexGrid1.ColWidth(0) = 680 record.MoveFirst For m = 1 To recscount For n = 0 To tDesc.FieldCount - 1 Form1.MSFlexGrid1.T

16、extMatrix(m, n + 1) = record.Fields(tDesc.FieldName(n).Value Next n record.MoveNext Next record.MoveFirst Form1.MSFlexGrid1.Refresh End IfEnd Sub点击查询按钮进行查询(实际查询过程在 Map1_AfterTrackingLayerDraw过程中,这里点击查询按钮,用开关进行控制查询)Private Sub Command1_Click() ponoff = True Form2.Map1.Refresh DisplaySelFeatureEnd Sub

17、4.2.6清除功能的实现,点击清除功能,对text1以及属性表MSFlexGrid1中的条件进行清除代码如下:清除功能:Private Sub Command2_Click()Text1.Text = Form1.MSFlexGrid1.ClearSet record = NothingForm2.Map1.RefreshEnd Sub4.2.7闪烁功能的实现,对选择出来的结果进行闪烁代码如下:进行闪烁Private Sub Command3_Click() Form2.Map1.FlashShape record(shape).Value, 3End Sub4.2.8居中共能的实现,即对选中

18、的结果进行居中显示代码如下:进行居中显示Private Sub Command4_Click() Dim Rect As Rectangle, Rect2 As Rectangle Dim shapeX As Double, shapeY As Double Dim deltax As Double, deltay As Double Dim theShape As Object, pinPoint As MapObjects2.Point Dim i As Integer Dim recNo As Integer recNo = MSFlexGrid1.Row - 1 record.Move

19、First 记录指针移动到属性数据表选择中的记录上 For i = 0 To recNo - 1 record.MoveNext Next i Set theShape = record(shape).Value If record(shape).Type = moPoint Then Set Rect2 = Form2.Map1.Extent shapeX = record(shape).Value.X shapeY = record(shape).Value.Y deltax = shapeX - Rect2.Center.X deltay = shapeY - Rect2.Center.

20、Y Rect2.Offset deltax, deltay Rect2.ScaleRectangle 0.1 Form2.Map1.Extent = Rect2 Else Set Rect = record(shape).Value.Extent Rect.ScaleRectangle 1.1 Form2.Map1.Extent = Rect End If Set Rect2 = Nothing Set theShape = NothingEnd Sub5、 实验结果:5.1查询功能运行的结果面查询:线查询:点查询:5.2清除功能的实现查询:然后再清除:5.3闪烁功能的实现先查询后闪烁5.4居中功能的实现先查询后居中6、 实验小结(出现过的问题或错误、原因分析):6.1在实验过程中,对VB编程的不熟悉,导致速度很慢。6.2在实验过程中,由于对很对函数的作用不了解,很多时候需要查看帮助。6.3在实验过程中,出现多次语法等错误导致结果出不来。还得需要老师的帮助或看老师的代码才能解决问题,自主编程能力差,还需要多家练习。6.4功能不完善,在进行调试的时候,出现很多问题和漏洞还不能解决。 指导老师评语:指导老师签名: 2013年 月 日

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2