670 likes | 900 Views
创建和使用用户界面元素. MapBasic 在结构上与 QBasic 和 Visual Basic 相似,基本用了 Basic 的结构,语言用户可以方便开发专门的 MapInfo 应用系统。 通过 MapBasic ,用户可以开发适合自己的专业化的操作界面,可以修改或取代原有菜单。. 创建 MapBasic 程序的一般过程. 对一个 MapBasic 程序主要通过程序创建、代码输入、编译和运行四步骤进行。 例:编制一个显示内容为“欢迎进入系统”的对话框。. 新建程序窗口.
E N D
创建和使用用户界面元素 MapBasic在结构上与QBasic和Visual Basic相似,基本用了Basic的结构,语言用户可以方便开发专门的MapInfo应用系统。 通过MapBasic,用户可以开发适合自己的专业化的操作界面,可以修改或取代原有菜单。
创建MapBasic程序的一般过程 对一个MapBasic程序主要通过程序创建、代码输入、编译和运行四步骤进行。 例:编制一个显示内容为“欢迎进入系统”的对话框。
新建程序窗口 在MapBasic中新建一个程序窗口:打开“文件File”中的“创建New”、或通过“Ctrl+N”快捷方式新建。
编写程序语句 在程序窗口内编写程序语句。
程序存盘 • 在主菜单中选择File→Save,将保存为一个MapBasic源代码文件,如“首页.mb”
程序编译 在编译成功将自动生成一个相应的可执行文件,“首页.MBX”,否则会出现错误提示(见下页):
根据提示查找语句、调试,再编辑调试程序(Project->Combile Current File ),直 到成功。
运行程序 在MapBasic中,选择Project->Run系统将自动启动MapInfo系统,并执行刚才生成的可执行文件“首页.mbx”。
制作全新的菜单栏 语法: Create Menu Bar As {菜单名 或 ID 菜单号} [,{菜单名 或 ID 菜单号}...] Alter Menu Bar Add {菜单名 或 ID菜单号} [,{菜单名 或 ID菜单号}...]
例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。 1.打开创建窗口输入代码,如图:
制作全新的菜单栏 通过编译,运行结果如下:
修改已有菜单栏 1. 删除菜单 语法: Alter Menu Bar Remove {菜单名 或ID 菜单号} [,{菜单名 或 ID 菜单号}...]
修改已有菜单栏 2. 恢复菜单 若放弃对菜单栏的修改,恢复原有菜单样式,可以运行以下代码: Create Menu Bar As Default
对话框制作 标准对话框 1. 消息对话框 语法: Note 消息 图9-7 消息对话框 例:显示一个“查询成功!”的消息对话框。 代码如下: Note "查询成功!"
对话框制作--------询问对话框 语法: Ask (提示信息,确定文本,取消文本) 例:做一个简单询问对话框,显示“确定删除吗?”,“确定”,“撤消”。 程序代码: Dim more As logical more=Ask("确定要删除吗?","确定","撤消")
对话框制作--------选择文件对话框 语法: FileOpenDlg(路径,文件名,文件类型,标题) 例:制作一个提示用户打开(保存)文件的对话框。 首先打开创建程序窗口,编写程序如下图:
对话框制作--------自定义对话框制作 控件的大小由Width(宽)和Height(高)控制。位置和大小采用对话框单位为单位,每个对话框单位表示一个字符宽度的1/4或一个字符高度的1/8,以对话框的左上角为原点,它的位置是(0,0)。
控件类型 1. 静态文本控件 语法: Control StaticText [ Position x , y] [ Width宽度] [ Height高度] [ ID控件号] [ Title标题]
控件类型 2. 输入文本控件 语法: Control EditText [ Position x , y] [ Width宽度 ] [ Height高度] [ ID控件号] [ Value 初始值] [ Into变量]
实例制作 自定义一控件的位置及大小,要求对话框输入“权属主姓名”,有“确定”和“取消”两个按钮。
控件类型 3. 组合框控件 语法: Control GroupBox [ Position x , y ] [ Width宽度 ] [ Height高度] [ Title标题]
控件类型 4. 单选项组合控件 语法: Control RadioGroup [ Position x , y ] [ ID控件号] [ Calling过程] [ Title {字符串表达式 或 From Variable 字符串变量}] [ Value初始选项] [ Into变量]
控件类型 5. Picker选取对象类控件 语法: Control { PenPicker 或BrushPicker 或SymbolPicker 或FontPicker } [ Position x , y ] [ Width 宽度 ] [ Height 高度 ] [ ID控件号] [ Calling过程] [ Value样式表达式] [ Into样式变量]
控件类型 6.ListBox列表框控件 语法: Control ListBox [ Position x , y ] [ Width 宽度 ] [ Height 高度 ] [ ID控件号] [ Calling过程] [ Title {字符串表达式 或 From Variable字符串变量}] [ Value初始选项] [ Into变量]
控件类型 7. 多重列表框控件 语法: Control MultiListBox [ Position x , y ] [ Width 宽度 ] [ Height 高度 ] [ ID控件号] [ Calling过程] [ Title {字符串表达式 或 From Variable字符 串变量}] [ Value初始选项] [ Into变量]
控件类型 8. 下拉列表框控件 语法: Control PopupMenu [ Position x , y ] [ Width宽度 ] [ ID 控件号] [ Calling 过程 ] [ Title { [ Title {字符串表达式 或 From Variable字符串变量}] [ Value 初始选项 ] [ Into 选项变量 ]
控件类型 9. 复选框控件 语法: Control CheckBox [ Position x , y ] [ Width 宽度] [ ID 控件号] [ Calling过程] [ Title标题 ] [ Value逻辑值 ] [ Into逻辑变量 ]
窗口制作 MapBasic应用程序能够控制所有的 MapInfo窗口,包括标准窗口、地图窗口、 浏览(Browse)窗口、布局(Layout)窗 口、专题图(Graph)窗口、信息窗口。
自定义窗口设置 窗口的大小和位置可以通过两种方法控制: 1.在打开的窗口的同时指定窗口的大小和位置; 2.使用Set Window语句在打开窗口后调整窗口的位置和大小。
自定义窗口设置 Set Window语句调整窗口语法: Set Window 窗口号 [ Position ( x , y ) [ Units 纸面单位 ] ] [ Width 窗口宽度 [ Units 纸面单位 ] ] [ Height 窗口高度 [ Units 纸面单位 ] ]
自定义窗口设置 地图窗口增加图层的语法为: Add Map [ Window 窗口号 ] Layer 表1 [ , 表2... ] [ Auto ] [ Animate ]
自定义窗口设置 设置地图投影: 可以使用Set Map CoordSys... 语句改变地图投影,若要保存投影,使用Commit Table ...As...CoordSys..语句。
浏览窗口制作 浏览窗口以二维表的形式显示一个表的数据。 浏览窗口语法: Browse 表达式列表From 表 [ Position ( x , y) [ Units 纸面单位] ] [ Width 窗口宽度[ Units 纸面单位] ] [ Height 窗口高度[ Units 纸面单位] ] [ Row 行号 ] [ Column 列号] [ Min 或Max ]
布局窗口制作 布局窗口表示一个类似于纸面的页面布局。布局窗口语法: Layout [ Position ( x , y ) [ Units 纸面单位] ] [Width窗口宽度 [ Units 纸面单位] ] [ Height 窗口高度 [ Units 纸面单位] ] [ { Min 或Max } ]
统计窗口制作 统计窗口包含一个表达式及统计图。 统计窗口语法: Graph 标注列, 表达式1,表达式2... From 表 [ Position ( x , y ) [ Units 纸面单位] ] [ Width 窗口宽度[ Units 纸面单位] ] [ Height 窗口高度[ Units 纸面单位] ] [ Min 或Max ]
信息窗口制作 信息窗口是MapInfo中很常见的一种窗口。 它显示某个地图对象的全部属性信息。用户 可以通过在其中输入、更改地图对象属性信 息。
信息窗口制作实例 例: Include "MapBasic.def" Open Table "World" Interactive Select Country,Capital,Inflat_Rate+0 "Inflation" From World Into World_Query Set Window Info Title "Country Data" Table World_Query Rec 9 Font MakeFont("Arial",1,10,BLACK,WHITE) Width 3 Units "in" Height 1.2 Units "in" Position (2.5,1.5) Units "in" Front
消息窗口制作 语法: Print 消息 在窗口信息中可以用 Print “Map Layers:” + Chr$(10) + “ World, Capitals” 实现换行。
创建工具条 工具条的类型: 1. PushButtons按钮 这种叫做触发式按钮。当用户按下ToolButtons按钮后,按钮立即复位,并调用相应的处理程序。 2. ToggleButtons按钮 这种按钮叫做开关式按钮。当用户单击ToggleButtons按钮时,这种按钮会在按下与没按下之间切换。 3. ToolButton按钮 这种称为工具按钮。当用户单击这种按钮时,它处于活动状态,直到用户单击了另外的按钮。
创建工具条 1.创建一个新工具条的语句为: Create ButtonPad 2.激活工具条 创建一个工具条,并不能立刻显示在窗口中,需要使用下面的语句激活: Alter ButtonPad 3.激活按钮 4.按钮的返回值 用户操作按钮的信息要返回给MapInfo来决定下一步执行哪一个 子程序。MapBasic使用CommandInfo()函数返回用户的操作按钮的 信息。
创建按钮 1.创建触发式型按钮 2.创建工具按钮 3.向“主”工具条添加一个按钮 4.选择按钮图表
MapBasic过程 MapBasic主过程 Declare Sub Main '声明一个主过程 Sub Main '主过程开始 Note“Testing,onetwothree.“ ‘显示一个消息 End Sub '结束主过程
MapBasic过程 MapBasic子过程 子过程的声明方法: Declare Sub 子过程名
MapBasic变量 MapBasic变量包括全局变量(Global)和局部变量(Dim)。全局变量在整个程序中起作用,而局部变量仅在声明该变量的过程中其作用。 变量的类型有短整型(SmallInt)、整型(Integer)、浮点型(Float)、定长字符型(String)、可变长字符型(String*n)、布尔型(Logical)、日期型(Date)、对象型(Object)、列变量(Alias)、线型(Pen)、填充(Brush)、字体(Font)、符号(Symbol)。