1 / 98

第 9 章 MapBasic 编程

第 9 章 MapBasic 编程. 9.1 制作菜单栏 9.1.1 制作全新的菜单栏 9.1.2 修改已有菜单栏 9.2 菜单制作 9.2.1 全新菜单的制作 9.2.2 更改原有菜单 9.3 对话框制作 9.3.1 标准对话框. 9.3.2 自定义对话框制作 9.3.3 控件的位置和大小 9.3.4 控件类型 9.3.5 控件的初值和终值 9.4 窗口 9.4.1 窗口的大小和位置 9.4.2 地图窗口

morwen
Download Presentation

第 9 章 MapBasic 编程

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章MapBasic编程 9.1 制作菜单栏 9.1.1 制作全新的菜单栏 9.1.2 修改已有菜单栏 9.2 菜单制作 9.2.1 全新菜单的制作 9.2.2 更改原有菜单 9.3 对话框制作 9.3.1 标准对话框 9.3.2 自定义对话框制作 9.3.3 控件的位置和大小 9.3.4 控件类型 9.3.5 控件的初值和终值 9.4 窗口 9.4.1 窗口的大小和位置 9.4.2 地图窗口 9.4.3 浏览窗口

  2. 9.4.4 统计窗口 9.4.5 布局窗口 9.4.6 信息窗口 9.4.7 消息窗口 9.5 工具条 9.5.1 工具条的类型 9.5.2 工具条的操作 9.5.3 创建触发式型按钮 9.5.4 创建工具按钮 9.5.5 向“主”工具条添加一个 按钮 9.5.6 选择按钮图表 9.5.7 运行MapBasic应用程序 9.6 MapBasic过程 9.6.1 MapBasic主过程 9.6.2 MapBasic子过程 9.7 MapBasic变量 9.8 MapBasic的表达式 9.8.1 MapBasic的函数 9.8.2 MapBasic的运算符 9.9 分支、循环和其他流程控制 9.9.1 分支语句 9.9.2 循环语句 9.9.3 其他流程控制语句 9.10 MapBasic的表操作 9.11 习题9

  3. 9.1 制作菜单栏 菜单栏是MapInfo工作区域顶部的水平条,初始状态下的MapInfo的菜单栏包括“File”,“Edit”,“Objects”,“Query”等。

  4. 9.1.1 制作全新的菜单栏 语法: Create Menu Bar As {菜单名 或 ID 菜单号} [,{菜单名 或 ID 菜单号}...]

  5. 【例9-1】制作一个全新菜单栏,包含“File”,“Edit”,“Query”,“Map”,“Browse”菜单。【例9-1】制作一个全新菜单栏,包含“File”,“Edit”,“Query”,“Map”,“Browse”菜单。 代码如下: Create Menu Bar As "File","Edit","Query","Map","Browse" 图9-1 全新菜单栏

  6. 9.1.2 修改已有菜单栏 1. 删除菜单 语法: Alter Menu Bar Remove {菜单名 或ID 菜单号} [,{菜单名 或 ID 菜单号}...] 【例9-2】在原有菜单栏的基础上,删除“Windows”,“Help”菜单。

  7. 代码如下: Alter Menu Bar Remove ID 6, ID 7 图9-2 删除菜单

  8. 2. 增加菜单 语法: Alter Menu Bar Add   {菜单名 或 ID菜单号}   [,{菜单名 或 ID菜单号}...] 【例9-3】在原有菜单栏的基础上,增加“DataEntry”菜单。 代码如下: Alter Menu Bar Add "DataEntry"

  9. 图9-3 增加菜单 图9-4 在菜单栏中间增加菜单

  10. 3. 恢复菜单 语法: Create Menu Bar As Default 若放弃对菜单栏的修改,恢复原有菜单样式,可以运行以下代码: Create Menu Bar As Default

  11. 9.2 菜单制作 9.2.1 全新菜单的制作 语法: Create Menu 新菜单名 [ID 菜单号]As   菜单项1 [ ID菜单号] { Calling handler | As 菜单名}   [,菜单项2...]

  12. 【例9-4】制作全新菜单“DataEntry”。 代码如下: Create Menu "DataEntry" As '制作“DataEntry”菜单 "Add" , '菜单有三个菜单项 "Edit" , "Delete" Alter Menu Bar Add "DataEntry" '将菜单添加到菜单栏中 图9-5 制作全新菜单

  13. 9.2.2 更改原有菜单 语法: Create Menu 新菜单名 [ID 菜单号]As 菜单项1 [ ID菜单项] { Calling handler | As 菜单名} [,菜单项2...] 【例9-5】更改原有菜单“File”的内容。 代码如下: Create Menu "&File" As "&New" , "&Open" , "&Close" , "&Save" , "&Print" , "&Exit"

  14. 图9-6 更改原有菜单

  15. 9.3 对话框制作 9.3.1 标准对话框 1. 消息对话框 语法: Note 消息 图9-7 消息对话框 【例9-6】例如显示一个“查询成功!”的消息对话框。 代码如下: Note "查询成功!"

  16. 2. 询问对话框 语法: Ask (提示信息,确定文本,取消文本) 【例9-7】下面的例子用生成一个简单询问对话框。 Dim more As Logical more = Ask("Do you want to continue?", "OK", "Stop") 运行结果如图9-8所示。 图9-8 询问对话框

  17. 3. 选择文件对话框 语法: FileOpenDlg(路径,文件名,文件类型,标题) 【例9-8】下面的程序用FileOpenDlg()函数显示提示用户打开一个文件的对话框。 Dim s_filename As String s_filename= FileOpenDlg("","","TAB","Open Table") 运行结果如图9-9所示。

  18. 图9-9 选择文件对话框

  19. 9.3.2 自定义对话框制作 【例9-9】下面是生成一个自定义对话框的代码: Dialog title "按省份名" Control Statictext title "请输省份名:" Control Edittext Control Okbutton Title "确定" Control Cancelbutton Title "取消"

  20. 图9-10 自定义对话框 图9-11 指定位置和大小

  21. 9.3.3 控件的位置和大小 控件的大小由Width(宽)和Height(高)控制。位置和大小采用对话框单位为单位,每个对话框单位表示一个字符宽度的1/4或一个字符高度的1/8,以对话框的左上角为原点,它的位置是(0,0)。 【例9-10】下面的例程指定了控件的位置及大小。 Dialog Title "按省份名" Control StaticText

  22. Title "请输省份名:" Control EditText Control OkButton Width 20 Height 12 Title "确定" Position 60,32 Control CancelButton Width 20 Height 12 Title "取消" Position 100,32 运行结果如图9-11所示。

  23. 9.3.4 控件类型 1. 静态文本控件 语法: Control StaticText [ Position x , y] [ Width宽度] [ Height高度] [ ID控件号] [ Title标题]

  24. 【例9-11】下面是生成一个静态文本控件的代码:【例9-11】下面是生成一个静态文本控件的代码: Dialog Control StaticText Title "Enter map title:" Position 5, 10 Control OkButton 图9-12 静态文本控件 Control CancelButton 运行结果如图9-12所示。

  25. 2. 输入文本控件 语法: Control EditText [ Position x , y] [ Width宽度 ] [ Height高度] [ ID控件号] [ Value 初始值] [ Into变量] 【例9-12】下面是生成一个输入文本控件的代码: Dialog Control EditText

  26. Control OkButton Control CancelButton 运行结果如图9-13所示。 图9-13 输入文本控件

  27. 3. 组合框控件 语法: Control GroupBox [ Position x , y ] [ Width宽度 ] [ Height高度] [ Title标题] 【例9-13】下面是生成一个组合框的代码: Dialog Control GroupBox Title "Level of Detail"

  28. Position 5, 30 Height 40 Width 70 Control OkButton Control CancelButton 运行结果如图9-14所示。 4. 单选项组合控件 语法: Control RadioGroup   图9-14 组合框控件 [ Position x , y ]   [ ID控件号]   [ Calling过程]   [ Title {字符串表达式 或 From Variable 字符串变量}]  

  29. [ Value初始选项]   [ Into变量]   【例9-14】下面是生成一个单选项组合控件的代码: Dialog Control RadioGroup Title "&Full Details;&Partial Details" Position 15, 42 Control OkButton Control CancelButton 运行结果如图9-15所示。

  30. 5. Picker选取对象类控件 语法: Control { PenPicker 或BrushPicker 或SymbolPicker 或FontPicker }   [ Position x , y ] [ Width 宽度 ] [ Height 高度 ]   [ ID控件号]   [ Calling过程]   [ Value样式表达式]   [ Into样式变量]

  31. 【例9-15】下面是生成一个文本选取控件的代码:【例9-15】下面是生成一个文本选取控件的代码: Dialog Control FontPicker Position 140,42 Control OkButton Control CancelButton 运行结果如图9-16所示。图9-16 文本选取控件

  32. 6.ListBox列表框控件 语法: Control ListBox [ Position x , y ] [ Width 宽度 ] [ Height 高度 ] [ ID控件号] [ Calling过程] [ Title {字符串表达式 或 From Variable字符串变量}] [ Value初始选项] [ Into变量] 【例9-16】下面是生成一个列表框控件的代码:

  33. Dialog Control ListBox Title "1st Quarter;2nd Quarter;3rd Quarter;4th Quarter" Position 10, 92 Height 40 Control OkButton Control CancelButton 运行结果如图9-17所示。 图9-17列表框控件

  34. 7. 多重列表框控件 语法: Control MultiListBox [ Position x , y ] [ Width 宽度 ] [ Height 高度 ] [ ID控件号] [ Calling过程] [ Title {字符串表达式 或 From Variable字符 串变量}] [ Value初始选项] [ Into变量]

  35. 【例9-17】下面是生成一个多重列表框控件的代码:【例9-17】下面是生成一个多重列表框控件的代码: Dialog Control MultiListBox Title "Streets;Highways;Towns;Countries;States" Position 10, 92 Width 65 Height 35 Control OkButton Control CancelButton 运行结果如图9-18所示。 图9-18 多重列表框控件

  36. 8. 下拉列表框控件 语法: Control PopupMenu [ Position x , y ] [ Width宽度 ] [ ID 控件号] [ Calling 过程 ] [ Title { [ Title {字符串表达式 或 From Variable字符串变量}] [ Value 初始选项 ] [ Into 选项变量 ]

  37. 【例9-18】下面是生成一个下拉列表框控件的代码:【例9-18】下面是生成一个下拉列表框控件的代码: Dialog Control PopupMenu Title "Town;County;Territory;Region;Entire state" Position 10, 150 Control OkButton Control CancelButton 图9-19 下拉列表框控件

  38. 9. 复选框控件 语法: Control CheckBox [ Position x , y ] [ Width 宽度] [ ID 控件号] [ Calling过程] [ Title标题 ] [ Value逻辑值 ] [ Into逻辑变量 ]

  39. 【例9-19】下面是生成一个复选框控件的代码:【例9-19】下面是生成一个复选框控件的代码: Dialog Control CheckBox Title "Include &Legend" Position 115, 155 Control OkButton 图9-20 复选框控件 Control CancelButton 运行结果如图9-20所示。

  40. 10. 按钮控件 MapBasic包含两个按钮:OkButton和CancelButton。 9.3.5 控件的初值和终值 大部分控件都有一可选的Value从句,这个从句定义了对话框第一次显示时该控件的状态。 大多控件都有一Into从句,这个从句后面有一个变量,MapInfo用这个变量存储对话框的数据。如果有Into从句,用户通过单击“Ok”按钮确认该对话框后,MapInfo会用Into后的变量存储控件的最终值。

  41. 9.4 窗口 MapBasic应用程序能够控制所有的 MapInfo窗口,包括标准窗口、地图窗口、浏览 (Browse)窗口、布局(Layout)窗口、专题图 (Graph)窗口、信息窗口。 9.4.1 窗口的大小和位置 窗口的大小和位置可以通过两种方法控制: ① 在打开的窗口的同时指定窗口的大小和 位置。

  42. 【例9-20】下面的语句指定地图窗口及布局窗口的位置及大小:【例9-20】下面的语句指定地图窗口及布局窗口的位置及大小: Open Table "world" Open Table "cust1994" As customers Map from customers, world Position (1,1) Width 3 Height 2 Layout Position (0, 0) Width 2 Height 4

  43. 在打开窗口后调整窗口的位置和大小。使用Set Window语句。 语法: Set Window 窗口号 [ Position ( x , y ) [ Units 纸面单位 ] ] [ Width 窗口宽度 [ Units 纸面单位 ] ] [ Height 窗口高度 [ Units 纸面单位 ] ]

  44. 9.4.2 地图窗口 1. 图层的操作 增加图层的语法为: Add Map [ Window 窗口号 ] Layer 表1 [ , 表2... ] [ Auto ] [ Animate ]

  45. 2. 设置地图投影 可以使用Set Map CoordSys... 语句改变地 图投影,若要保存投影,使用Commit Table ...As...CoordSys..语句。 3. 制作专题图 专题图有六种形式。每种都可以用相应的 MapBasic语句实现。 (1) 范围值 (ranges of values) 语法: Shade [ Window 窗口号 ] { 图层号或图层名} With 表达式

  46. [ Ignore 忽略的数值 ] Ranges [ Apply { Color或 Size或 All } ] 【例9-22】下面的例子是根据美国1990年人口生成的范围值图,总共有三个范围,每个范围用不同颜色、样式填充。 Open Table " states " Map From Shade states With Pop_1990 Ranges 4827000:29280000 Brush (2,0,201326591) , 1783000: 4827000 Brush (8,0,16777215) , 449000: 1783000 Brush (5,0,16777215)

  47. (2) 独立值 (individual values) 语法: Shade [ Window 窗口号] {图层号或图层名} With 表达式 [ Ignore 忽略的数值 ] Values 字段1 [ Pen... ] [ Line...] [ Brush... ] [ Symbol... ] [ , 字段2 [ Pen... ] [ Line...] [ Brush... ] [ Symbol... ] ... ]

  48. 【例9-23】下面的例子假定“uk_sales”表中有“Sales_Rep”字段,该字段代表在英国销售代理的名字。根据销售商来制作独立值图。【例9-23】下面的例子假定“uk_sales”表中有“Sales_Rep”字段,该字段代表在英国销售代理的名字。根据销售商来制作独立值图。 Open Table "uk_sales" Map From uk_sales Shade 1 With Proper$(Sales_Rep) Ignore "" Values "Alan", "Amanda", "Bob", "Jan"

  49. (3) 点密度 (dot density) 语法: Shade [ Window 窗口号] {图层号或图层名} With 表达式 Density 数值 : 点的尺寸 [ Color 颜色号 ] 【例9-24】下面的例子根据人口制作点密度图,60000个人用一个4个像元大小的点表示。 Open Table "States" Map From states Shade states With Num_HH_90 Density 60000:4

  50. (4) 等级符号(graduated symbols) 语法: Shade [ Window 窗口号] {图层号或图层名} With 表达式 Graduated 最小值:符号大小 最大值:符号大小 Symbol . . . [ Inflect Symbol . . . ] [ Vary Size By {" LOG" 或 "SQRT" 或 "CONST"} ]

More Related