第11章用MapBasic建立用户系统
11.lMapBasic程序结构
前一章介绍了MapBasic的基本元素,由它们构成MapBasic的不同种类的语句,再由语句组织成程序。但是MapBasic程序中的语句必须以一个特定的方式被安排,而不是任意的。例如:Global语句就不能放在Sub … End Sub结构中,下面给出的是MapBasic程序中不同组件排列顺序的一个典型的格式:
全局级的语句出现在程序的项部
Include “mapbasic.def”
其他的Includc语句
Type … End Type语句
Declare Sub语句
Declare Function语句
Define语句
Global语句
…接下来是主过程定义…
Sub Main
Dim语句
End Sub
....接着是其他的子过程定义
Sub ....
Dim语句
End Sub
......用户函数定义....
Function ....
Dim语句
End Function
11.2用户界面程序实例
为了能让读者迅速掌握用MapBasic进行应用程序开发的最基本方法,本节将通过剖析一个程序实例来展示MapBasic强大的开发功能。由于该程序只是一个演示程序,所以它的重点只放在用户界面的创建。对于其他一些辅助功能,本程序只提供了功能框架,而没有给出具有完整功能的程序模块。有兴趣的读者可以对本程序的部分或全部进行修改、增加和精简,以便完善该程序的功能。
11.2.1 程序功能简介
一个优秀的应用程序,必须有一个令人赏心悦目的用户界面。一个设计良好的用户界面不但能够使用户得到视觉上的享受,而且能够提高人机交互的效率。本程序的最主要部分是生成一个用户界面,其中包括创建一个全用户化的菜单、定制符合用户要求的按钮盒和对话框,并且在必要时能及时打开一个合适的窗口(如地图窗口、浏览窗口或统计窗口等)。
1。用户菜单
一般情况下,我们并不需要完全放弃MapInfo的原始菜单,而只要在该菜单系统的基础上,适当地删去一些不需要的菜单或菜单项,再增加一些新的菜单或菜单项就可以制作出符合自己要求的菜单。但MapBasic同样支持你创建一个全新的菜单系统,本程序就是采用了这种方式。当运行该演示程序时,屏幕上将出现如图11.1所示的用户界面。程序
图11-1演示程序的显示情况
除了显示一个用户菜单及用户按钮盒外,还打开了一个地图窗口,在地图窗口中打开了几个MapInfo表。其中菜单栏在屏幕的最上方,它包括:系统菜单、演示菜单、对象、旅游查询、旅游统计图及帮助。
·系统菜申.它由“打开表”、“关闭表”、“全部关闭”、“世界地图”和“退出”五个菜单项组成。主要完成对MapInfo表的打开与关闭操作,并同时将它显示在一个地图窗口中。其中“打开”是让用户选择并打开一个表,而“世界地图”是直接由MapBasic打开一个事先选定的表(World.tab);“关闭”是让用户选择一个当前打开的表把它关闭,并保存相应工作空间,而“全部关闭”是将当前矽甫打开的表全部关闭;“退出”是退出该演示程序恢复到原来的MapInfo界面。
.演示菜单它包含一个“建介”了菜单。该子菜单用于生成一个用户菜单、按钮盒或对话柜。对应于此英申的MapBaslc功能模块就是生成用户界面的最典型方法。菜单项“工具栏”实质上是一个对话框,只是该对话框只包含四个复选框:主、常用、绘图、用户。当选中了其中的一个或多个,相应的按钮盒就会在屏幕亡显示,否则就会隐藏按钮盒。这里按钮盒“主”、“常用”和“绘图”是MapInfo系统自带的,而“用户”按钮盒则是由本演示程序自制的。另外,你还会看到三个呈现灰色的菜单项“设置更新口令”、“数据备份”和“数据恢复”,由于这些功能在本程序中还没有全部制作进去,所以这里把这些菜单项设置为不可选。
·对象MapBasic可以创建、修改对象,而且可以把一个对象赋给一个表的对象列。该菜单包括一个“创建对象”子菜单和两个菜单项“折线转换成区域”、“区域转换成折线”。其中两个菜单项是呈灰色的,表示它们不可选择。而“创建对象”子菜单是用于创建MapInfo的图形对象,当用户选择了该子菜单下的一个菜单项时,程序首先将建立一个MapInfo表,并将该表地图化,接着为它追加一条记录,并把创建的对象赋值给该记录的对象列。最后,程序将在一个地图窗口的一个可编辑图居中显示该对象。
·旅游查询该菜申的所有菜单项都是不可选的。用户可以根据自己的要求编写相应的程序以完成该项功能。
.旅游统计图这个菜单的功能是将某些MapInfo表中的信息以统计图的形式显示在屏幕上,使得观察更加直观方便,当然你可以通过设置来指定统计图的格式。
.帮助该菜单提供了MapInfo主要功能的在线查询,通过Intemet访问MapInfo 站点,以及有关本演水程序的一些信息。
2.按钮盒
按钮盒是用户界面的重要组成部分。它以工具箱的形式为用户提供某些常用的功能。MgpBasic中的按钮盒中的按钮有三种类型:工具按钮、触发式按钮和按压式按钮(或称开关式按钮)。一般地,当选中一个工具按钮时,应用程序并不立即调用相应的处理程序,而只是作好了一些必要的设置(如改变光标的形状),只有在选中该按钮后,继续在相应的窗口中进行单击或拖拉时应用程序才调用相应处理程序,如MapInfo“绘图”按钮盒中的“画线”、“画椭圆”等按钮就属此类。触发式按钮是在选中该按钮时就立即调用处理程序,而按压式按钮是在“按压”或“恢复”该按钮时都调用处理程序。用户可以根据各自的需要选择合适的按钮类型。
本演示程序有两处涉及按钮盒的创建,一个是在程序开始运行时就出现在屏幕上的“用户”按钮盒。这里选择了一些对地图窗口进行操作的常用工具,如放大、缩小视图等。该按钮盒是漂浮在整个桌面上的。另外一个按钮盒是通过选择[演示菜单1>[建立]>[按钮盒]来创建的,该按钮盒是固定在窗口顶部,其中包含三个按钮,它们分别属于三种不同的类型。
3.对话框
该程序创建的一个最典型的对话框是通过选择[演示菜申—1>[建立3>[对话框]建立的。它包括以下对话框控件:StaticText、EditText、GroupBox、PopupMenu、ListBox、RadioGroup、SymbolPicker、CheckBox、OkButton和CancelButton。另外,“系统菜单”中的“退出”菜单项、“演示菜单”中的“工具栏”菜单项、“帮助”菜单中的“关于”菜单项都是对话框的例子。
4.窗口
窗口也是用户界面的重要组成部分,Maplnfo包括多种类型的窗口,如地图窗口、浏览窗口、统汁窗口、布局窗口以及普通的信息窗口等。本演示程序一执行就先打开一个地图窗口,并将窗口标题设置为“一个用户界面程序的演示示例”,另外,还可以用[系统菜单]>[打开]或[系统菜单]>[世界地图]打开一个地图窗口。通过选择[旅游统计图]>[旅游人口]可以打开一个统计图窗口。至于其他类型的统计图,本程序没有涉及,用户可以技类似的方法自己建立。