创建和使用用户界面元素
Download
1 / 67

创建和使用用户界面元素 - PowerPoint PPT Presentation


  • 179 Views
  • Uploaded on

创建和使用用户界面元素. MapBasic 在结构上与 QBasic 和 Visual Basic 相似,基本用了 Basic 的结构,语言用户可以方便开发专门的 MapInfo 应用系统。 通过 MapBasic ,用户可以开发适合自己的专业化的操作界面,可以修改或取代原有菜单。. 创建 MapBasic 程序的一般过程. 对一个 MapBasic 程序主要通过程序创建、代码输入、编译和运行四步骤进行。 例:编制一个显示内容为“欢迎进入系统”的对话框。. 新建程序窗口.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 创建和使用用户界面元素' - eman


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
创建和使用用户界面元素

MapBasic在结构上与QBasic和Visual Basic相似,基本用了Basic的结构,语言用户可以方便开发专门的MapInfo应用系统。

通过MapBasic,用户可以开发适合自己的专业化的操作界面,可以修改或取代原有菜单。


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(路径,文件名,文件类型,标题)

例:制作一个提示用户打开(保存)文件的对话框。

首先打开创建程序窗口,编写程序如下图:


保存后编译,再运行(例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。Run),流程如下:


对话框制作例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。--------自定义对话框制作

控件的大小由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变量]


ListBox例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。列表框控件实例


控件类型例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

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.选择按钮图表


Mapbasic1
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。过程

MapBasic主过程

Declare Sub Main '声明一个主过程

Sub Main '主过程开始

Note“Testing,onetwothree.“ ‘显示一个消息

End Sub '结束主过程


Mapbasic2
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。过程

MapBasic子过程

子过程的声明方法:

Declare Sub

子过程名


Mapbasic3
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。变量

MapBasic变量包括全局变量(Global)和局部变量(Dim)。全局变量在整个程序中起作用,而局部变量仅在声明该变量的过程中其作用。

变量的类型有短整型(SmallInt)、整型(Integer)、浮点型(Float)、定长字符型(String)、可变长字符型(String*n)、布尔型(Logical)、日期型(Date)、对象型(Object)、列变量(Alias)、线型(Pen)、填充(Brush)、字体(Font)、符号(Symbol)。


Mapbasic4
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表达式

MapBasic的函数

MapBasic支持许多不同的函数。每一个函数都有不同的作用,如Sqr()函数计算正方形的面积,而Ucase$()函数将文本字符串改成大写。在表达式中引用函数时,程序就调用该函数并返回函数值。


操作符例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

用途

相加

相减

*

相乘

/

相除

\

整除

Mod

取余

^

乘方

MapBasic的运算符

1. 数字运算符


表达式例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

结果

date+integer

日期型值,表示以后的日期

date- integer

日期型值,表示以前的日期

date-date

整型数,表示过去的天数

MapBasic的运算符

2. 字符串运算符

字符运算符有“+”、“&”、“Like”。

3. 日期运算符


运算符例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

返回TRUE值

=

相等

<>

不相等

<

小于

>

大于

<=

小于等于

>=

大于等于

Between ...And ...

在…范围内

MapBasic的运算符

4. 比较运算符


运算符例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

返回TRUE值

举例

And

两操作数为真

If a And b Then

Or

任一操作数为真

If a Or b Then

Not

操作数为假

If Not a Then

MapBasic的运算符

5. 逻辑运算符


运算符例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

返回TRUE值

举例

Contains

目标A包含目标B中心点

If a Contains b Then

Contains Part

目标A包含目标B的一部分

If a Contains Part b Then

Contains Entire

目标A包含目标B的全部

If a Contains Entire b Then

Partly Within

目标A的一部分在目标B内

If a Partly Within b Then

Entirely Within

目标A的全部在目标B内

If a Entirely Within b Then

Intersects

目标A和目标B相交

If a Intersects b Then

MapBasic的运算符

6. 图形运算符


运算符的优先级例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

包含多个运算符的复杂表达式,MapBasic会按运算符的优先级规则来确定运算的先后。

优先级最高的是“( )”,其次指数、取反、乘法、除法、取余、取整运算、加法、减法、字符连接符、图形运算符、比较运算符、Like、Not、And,最低的是“Or”。


分支、循环和其他流程控制例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

分支语句

1. If语句

(1) If...Then

(2) If...Then...Else

(3) If...Then...ElseIf...Then


分支、循环和其他流程控制例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

2. Do Case语句

语法:

Do Case 表达式

Case 结果表1

语句体1

Case 结果表2

语句体2

Case Else

语句体n

End Case

3. Goto语句

语法:

Goto 标号


循环语句例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

1. For...Next语句

语法:

For 循环变量=初始值To 终值 [Step 步长]

[循环体]

Exit For

[循环体]

Next


循环语句例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

2. While...Wend语句

语法:

While 条件

循环体

Wend

3. Do...Loop语句

语法:

Do

循环体

Loop [ { Until 或While } 条件]

Do

[ { Until 或While } 条件]

循环体

Loop


其他流程控制语句例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。

1. End Program语句

语法:

End Program

2. Terminate Application语句

语法:

Terminate Application 应用程序名

3. End MapInfo语句

语法:

End MapInfo


Mapbasic5
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表操作

1. 创建新表

语法:

Create Table 表

( column 字段数据类型 [ , . . . ] )  

[ File 保存位置 ]  

[ { Type NATIVE |  

Type DBF [ CharSet char_set ] |  

Type Access Database 数据库文件格式


Mapbasic6
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表操作

2. 打开表

语法:

Open Table 表 [ As 别名 ]

[ Interactive ]

3. 关闭表

语法:

Close Table 表 [ Interactive ]

4. 删除表

语法:

Drop Table 表


Mapbasic7
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表操作

5. 查询表

语法:

Select 表达式列表

From 表1,表2, ... [ Where 表达式条件 ]

[ Into 结果表 ]

[ Group By 字段]

[ Order By 字段]


Mapbasic8
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表操作

6. 修改表数据

Insert语句

语法:

Insert Into 表 [ ( 字段 ) ]

{ Values (字段表达式) 或 Select 字段From 表}


Mapbasic9
MapBasic例:制作一个全新菜单栏,并加入到主菜单,包含“输入”、“编辑”、“删除”的“土地属性”菜单。的表操作

7. 修改表结构

语法:

Alter Table 表 (

[Add 字段1 类型1,字段2 类型2, ... ]

[Modify字段1 类型1,字段2 类型2, ... ]

[Drop字段1,字段2... ]

[Rename 旧字段1 新字段1,旧字段2 新字段2 [, ...] ]

[Order字段1,字段2... ]

)

[ Interactive ]


ad