




已阅读5页,还剩93页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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浏览窗口 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 6MapBasic过程9 6 1MapBasic主过程9 6 2MapBasic子过程9 7MapBasic变量9 8MapBasic的表达式9 8 1MapBasic的函数9 8 2MapBasic的运算符9 9分支 循环和其他流程控制9 9 1分支语句9 9 2循环语句9 9 3其他流程控制语句9 10MapBasic的表操作9 11习题9 9 1制作菜单栏 菜单栏是MapInfo工作区域顶部的水平条 初始状态下的MapInfo的菜单栏包括 File Edit Objects Query 等 9 1 1制作全新的菜单栏 语法 CreateMenuBarAs 菜单名或ID菜单号 菜单名或ID菜单号 例9 1 制作一个全新菜单栏 包含 File Edit Query Map Browse 菜单 代码如下 CreateMenuBarAs File Edit Query Map Browse 图9 1全新菜单栏 9 1 2修改已有菜单栏 1 删除菜单语法 AlterMenuBarRemove 菜单名或ID菜单号 菜单名或ID菜单号 例9 2 在原有菜单栏的基础上 删除 Windows Help 菜单 代码如下 AlterMenuBarRemoveID6 ID7图9 2删除菜单 2 增加菜单语法 AlterMenuBarAdd 菜单名或ID菜单号 菜单名或ID菜单号 例9 3 在原有菜单栏的基础上 增加 DataEntry 菜单 代码如下 AlterMenuBarAdd DataEntry 图9 3增加菜单图9 4在菜单栏中间增加菜单 3 恢复菜单语法 CreateMenuBarAsDefault若放弃对菜单栏的修改 恢复原有菜单样式 可以运行以下代码 CreateMenuBarAsDefault 9 2菜单制作 9 2 1全新菜单的制作语法 CreateMenu新菜单名 ID菜单号 As菜单项1 ID菜单号 Callinghandler As菜单名 菜单项2 例9 4 制作全新菜单 DataEntry 代码如下 CreateMenu DataEntry As 制作 DataEntry 菜单 Add 菜单有三个菜单项 Edit Delete AlterMenuBarAdd DataEntry 将菜单添加到菜单栏中图9 5制作全新菜单 9 2 2更改原有菜单 语法 CreateMenu新菜单名 ID菜单号 As菜单项1 ID菜单项 Callinghandler As菜单名 菜单项2 例9 5 更改原有菜单 File 的内容 代码如下 CreateMenu File As New Open Close Save Print Exit 图9 6更改原有菜单 9 3对话框制作 9 3 1标准对话框1 消息对话框语法 Note消息图9 7消息对话框 例9 6 例如显示一个 查询成功 的消息对话框 代码如下 Note 查询成功 2 询问对话框语法 Ask 提示信息 确定文本 取消文本 例9 7 下面的例子用生成一个简单询问对话框 DimmoreAsLogicalmore Ask Doyouwanttocontinue OK Stop 运行结果如图9 8所示 图9 8询问对话框 3 选择文件对话框语法 FileOpenDlg 路径 文件名 文件类型 标题 例9 8 下面的程序用FileOpenDlg 函数显示提示用户打开一个文件的对话框 Dims filenameAsStrings filename FileOpenDlg TAB OpenTable 运行结果如图9 9所示 图9 9选择文件对话框 9 3 2自定义对话框制作 例9 9 下面是生成一个自定义对话框的代码 Dialogtitle 按省份名 ControlStatictexttitle 请输省份名 ControlEdittextControlOkbuttonTitle 确定 ControlCancelbuttonTitle 取消 图9 10自定义对话框图9 11指定位置和大小 9 3 3控件的位置和大小 控件的大小由Width 宽 和Height 高 控制 位置和大小采用对话框单位为单位 每个对话框单位表示一个字符宽度的1 4或一个字符高度的1 8 以对话框的左上角为原点 它的位置是 0 0 例9 10 下面的例程指定了控件的位置及大小 DialogTitle 按省份名 ControlStaticText Title 请输省份名 ControlEditTextControlOkButtonWidth20Height12Title 确定 Position60 32ControlCancelButtonWidth20Height12Title 取消 Position100 32运行结果如图9 11所示 9 3 4控件类型 1 静态文本控件语法 ControlStaticText Positionx y Width宽度 Height高度 ID控件号 Title标题 例9 11 下面是生成一个静态文本控件的代码 DialogControlStaticTextTitle Entermaptitle Position5 10ControlOkButton图9 12静态文本控件ControlCancelButton运行结果如图9 12所示 2 输入文本控件语法 ControlEditText Positionx y Width宽度 Height高度 ID控件号 Value初始值 Into变量 例9 12 下面是生成一个输入文本控件的代码 DialogControlEditText ControlOkButtonControlCancelButton运行结果如图9 13所示 图9 13输入文本控件 3 组合框控件语法 ControlGroupBox Positionx y Width宽度 Height高度 Title标题 例9 13 下面是生成一个组合框的代码 DialogControlGroupBoxTitle LevelofDetail Position5 30Height40Width70ControlOkButtonControlCancelButton运行结果如图9 14所示 4 单选项组合控件语法 ControlRadioGroup图9 14组合框控件 Positionx y ID控件号 Calling过程 Title 字符串表达式或FromVariable字符串变量 Value初始选项 Into变量 例9 14 下面是生成一个单选项组合控件的代码 DialogControlRadioGroupTitle PartialDetails Position15 42ControlOkButtonControlCancelButton运行结果如图9 15所示 5 Picker选取对象类控件语法 Control PenPicker或BrushPicker或SymbolPicker或FontPicker Positionx y Width宽度 Height高度 ID控件号 Calling过程 Value样式表达式 Into样式变量 例9 15 下面是生成一个文本选取控件的代码 DialogControlFontPickerPosition140 42ControlOkButtonControlCancelButton运行结果如图9 16所示 图9 16文本选取控件 6 ListBox列表框控件语法 ControlListBox Positionx y Width宽度 Height高度 ID控件号 Calling过程 Title 字符串表达式或FromVariable字符串变量 Value初始选项 Into变量 例9 16 下面是生成一个列表框控件的代码 DialogControlListBoxTitle 1stQuarter 2ndQuarter 3rdQuarter 4thQuarter Position10 92Height40ControlOkButtonControlCancelButton运行结果如图9 17所示 图9 17列表框控件 7 多重列表框控件语法 ControlMultiListBox Positionx y Width宽度 Height高度 ID控件号 Calling过程 Title 字符串表达式或FromVariable字符串变量 Value初始选项 Into变量 例9 17 下面是生成一个多重列表框控件的代码 DialogControlMultiListBoxTitle Streets Highways Towns Countries States Position10 92Width65Height35ControlOkButtonControlCancelButton运行结果如图9 18所示 图9 18多重列表框控件 8 下拉列表框控件语法 ControlPopupMenu Positionx y Width宽度 ID控件号 Calling过程 Title Title 字符串表达式或FromVariable字符串变量 Value初始选项 Into选项变量 例9 18 下面是生成一个下拉列表框控件的代码 DialogControlPopupMenuTitle Town County Territory Region Entirestate Position10 150ControlOkButtonControlCancelButton图9 19下拉列表框控件 9 复选框控件语法 ControlCheckBox Positionx y Width宽度 ID控件号 Calling过程 Title标题 Value逻辑值 Into逻辑变量 例9 19 下面是生成一个复选框控件的代码 DialogControlCheckBoxTitle Include Legend Position115 155ControlOkButton图9 20复选框控件ControlCancelButton运行结果如图9 20所示 10 按钮控件MapBasic包含两个按钮 OkButton和CancelButton 9 3 5控件的初值和终值大部分控件都有一可选的Value从句 这个从句定义了对话框第一次显示时该控件的状态 大多控件都有一Into从句 这个从句后面有一个变量 MapInfo用这个变量存储对话框的数据 如果有Into从句 用户通过单击 Ok 按钮确认该对话框后 MapInfo会用Into后的变量存储控件的最终值 9 4窗口 MapBasic应用程序能够控制所有的MapInfo窗口 包括标准窗口 地图窗口 浏览 Browse 窗口 布局 Layout 窗口 专题图 Graph 窗口 信息窗口 9 4 1窗口的大小和位置窗口的大小和位置可以通过两种方法控制 在打开的窗口的同时指定窗口的大小和位置 例9 20 下面的语句指定地图窗口及布局窗口的位置及大小 OpenTable world OpenTable cust1994 AscustomersMapfromcustomers worldPosition 1 1 Width3Height2LayoutPosition 0 0 Width2Height4 在打开窗口后调整窗口的位置和大小 使用SetWindow语句 语法 SetWindow窗口号 Position x y Units纸面单位 Width窗口宽度 Units纸面单位 Height窗口高度 Units纸面单位 9 4 2地图窗口1 图层的操作增加图层的语法为 AddMap Window窗口号 Layer表1 表2 Auto Animate 2 设置地图投影可以使用SetMapCoordSys 语句改变地图投影 若要保存投影 使用CommitTable As CoordSys 语句 3 制作专题图专题图有六种形式 每种都可以用相应的MapBasic语句实现 1 范围值 rangesofvalues 语法 Shade Window窗口号 图层号或图层名 With表达式 Ignore忽略的数值 Ranges Apply Color或Size或All 例9 22 下面的例子是根据美国1990年人口生成的范围值图 总共有三个范围 每个范围用不同颜色 样式填充 OpenTable states MapFromShadestatesWithPop 1990Ranges4827000 29280000Brush 2 0 201326591 1783000 4827000Brush 8 0 16777215 449000 1783000Brush 5 0 16777215 2 独立值 individualvalues 语法 Shade Window窗口号 图层号或图层名 With表达式 Ignore忽略的数值 Values字段1 Pen Line Brush Symbol 字段2 Pen Line Brush Symbol 例9 23 下面的例子假定 uk sales 表中有 Sales Rep 字段 该字段代表在英国销售代理的名字 根据销售商来制作独立值图 OpenTable uk sales MapFromuk salesShade1WithProper Sales Rep Ignore Values Alan Amanda Bob Jan 3 点密度 dotdensity 语法 Shade Window窗口号 图层号或图层名 With表达式Density数值 点的尺寸 Color颜色号 例9 24 下面的例子根据人口制作点密度图 60000个人用一个4个像元大小的点表示 OpenTable States MapFromstatesShadestatesWithNum HH 90Density60000 4 4 等级符号 graduatedsymbols 语法 Shade Window窗口号 图层号或图层名 With表达式Graduated最小值 符号大小最大值 符号大小Symbol InflectSymbol VarySizeBy LOG 或 SQRT 或 CONST 例9 25 下面的例子建立等级符号表示利润和亏损 商店盈利则用绿色上三角表示 商店亏损则用红色下三角表示 ShadestoresWithNet ProfitGraduated0 0 015000 24Symbol 36 GREEN 24 InflectSymbol 37 RED 24 VarySizeBy SQRT 5 饼图 piecharts 语法 Shade Window窗口号 图层号或图层名或选择集 With表达式1 表达式2 Half Pie Angle角度 Counter Fixed MaxSize饼尺寸 Units单位名称 AtValue最大值 VarySizeBy LOG SQRT CONST 例9 26 下面的例子产生的饼图为同一尺寸 Shadesales 95Withphone sales retail salesPieFixedMaxSize0 25Units Inch 例9 27 下面的例子创建一个变化大小的饼图 如果记录的总和为85000 它对应的饼图为0 25英寸 记录的值越小 饼图也越小 Shadesales 95Withphone sales retail salesPieMaxSize0 25Units Inch AtValue85000 例9 28 下面的例子创建专题图 将饼图放置在图形对象中央 Shadesales 95Withphone sales retail salesPieAngle180MaxSize0 5Units Inch AtValue85000VarySizeBy SQRT BorderPen 1 2 0 PositionCenterAboveStyleBrush 2 RED 0 Brush 2 BLUE 0 6 直方图 barcharts 语法 Shade Window窗口号 图层号或图层名或选择集 With表达式1 表达式2 Bar Normalized 或StackedBar Fixed MaxSize最大尺寸 Units单位名称 AtValue最大值 VarySizeBy LOG 或 SQRT 或 CONST 例9 29 下面的例子创建直方图 并将直方图定位在地图对象中心点上方 Shadesales 93Withphone sales retail salesBarMaxSize0 4Units Inch AtValue1245000VarySizeByCONSTBorderPen 1 2 0 PositionCenterAboveStyleBrush 2 RED 0 Brush 2 BLUE 0 9 4 3浏览窗口语法 Browse表达式列表From表 Position x y Units纸面单位 Width窗口宽度 Units纸面单位 Height窗口高度 Units纸面单位 Row行号 Column列号 Min或Max 例9 29 下面的例子仅显示省份和人口 Browse省份 人口from政区图9 21显示所有字段图9 22显示选择字段 例9 31 下面的例子将第十九行和第二列显示在浏览窗口的左上角 Browse fromWorldRow19Column2图9 23浏览窗口 例9 32 下面的例子指定了表达式 用人口除以面积得到密度这一项 并将该表达式的名称改为 Density 密度 OpenTable world Browsecountry population population area obj sqkm Density Fromworld 9 4 4统计窗口语法 Graph标注列 表达式1 表达式2 From表 Position x y Units纸面单位 Width窗口宽度 Units纸面单位 Height窗口高度 Units纸面单位 Min或Max 例9 33 下面的例子创建人口统计图 Graph人口From政区运行结果如图9 24所示 图9 24统计窗口 9 4 5布局窗口语法 Layout Position x y Units纸面单位 Width窗口宽度 Units纸面单位 Height窗口高度 Units纸面单位 Min或Max 例9 34 例如下面的例子选择布局窗口中所有的对象 Select FromLayout1 例9 35 下面的例子创建一个布局窗口 LayoutPosition 0 0 Width2Height4运行结果如图9 25所示 图9 25布局窗口 9 4 6信息窗口 例9 36 下面的例子创建一个信息窗口 Include MapBasic def OpenTable World InteractiveSelectCountry Capital Inflat Rate 0 Inflation FromWorldIntoWorld QuerySetWindowInfoTitle CountryData TableWorld QueryRec9FontMakeFont Arial 1 10 BLACK WHITE Width3Units in Height1 2Units in Position 2 5 1 5 Units in Front 9 4 7消息窗口语法 Print消息在窗口信息中实现换行 可以用下面的语句 图9 26消息窗口的换行Print MapLayers Chr 10 World Capitals 运行结果如图9 26所示 图9 27设置消息的字体及颜色 例9 37 下面的例子创建一个消息窗口 设置了大小和字体样式 Include MAPBASIC DEF neededforcolorname BLUE OpenWindowMessage openMessagewindowSetWindowMessageFont Helv 1 10 BLUE Helveticabold Position 0 25 0 25 placeinupperleftWidth3 0 makewindow3 wideHeight1 0 makewindow1 highPrint MapBasicDispatchernowonline 运行结果如图9 27所示 9 5工具条 图9 28标准工具条图9 29绘图工具条图9 30主工具条 9 5 1工具条的类型1 PushButtons按钮这种叫做触发式按钮 当用户按下ToolButtons按钮后 按钮立即复位 并调用相应的处理程序 2 ToggleButtons按钮这种按钮叫做开关式按钮 当用户单击ToggleButtons按钮时 这种按钮会在按下与没按下之间切换 3 ToolButton按钮这种称为工具按钮 当用户单击这种按钮时 它处于活动状态 直到用户单击了另外的按钮 9 5 2工具条的操作1 创建工具条创建一个新工具条的语句为 CreateButtonPad2 激活工具条创建一个工具条 并不能立刻显示在窗口中 需要使用下面的语句激活 AlterButtonPad3 激活按钮4 按钮的返回值 9 5 3创建触发式型按钮9 5 4创建工具按钮9 5 5向 主 工具条添加一个按钮9 5 6选择按钮图表 例9 41 下面的语句定义了一个按钮 并为按钮选择了一个图标 图标代码定义为MI ICON INFO AlterButtonPad 主 AddSeparatorAddPushButtonIconMI ICON INFOCallingprocedure name 图9 31图标例子窗口 运行图标示例程序 ICONDEMO MBX 显示图标例子菜单 如图9 31所示 单击图标示例菜单 选择一个菜单项 出现一个自定义图标按钮盒 如图9 32所示 单击某个图标 出现如图9 33所示的对话框 将对话框中的图标代码复制到剪贴板中 打开MapBasic程序 用 Ctrl V 键将图标代码粘贴到应用程序中 图9 32自定义图标按钮盒图9 33图标代码对话框 9 5 7运行MapBasic应用程序Startup是一个特殊的工作空间 如果该工作空间存在于用户的系统中 MapInfo将自动加载该工作空间 若Startup工作空间中有RunApplication语句 则MapInfo将自动运行指定的程序 例如 用户要运行应用程序Query 可以创建如下Startup工作空间 Workspace Version400 CharsetNeutralRunApplication Query mbx 9 6MapBasic过程 9 6 1MapBasic主过程DeclareSubMain 声明一个主过程SubMain 主过程开始Note Testing onetwothree 显示一个消息EndSub 结束主过程 9 6 2MapBasic子过程子过程的声明方法如下 DeclareSub子过程名图9 34查询菜单 图9 35ProvinceName子过程 9 7MapBasic变量 MapBasic变量包括全局变量 Global 和局部变量 Dim 全局变量在整个程序中起作用 而局部变量仅在声明该变量的过程中其作用 变量的类型有短整型 SmallInt 整型 Integer 浮点型 Float 定长字符型 String 可变长字符型 String n 布尔型 Logical 日期型 Date 对象型 Object 列变量 Alias 线型 Pen 填充 Brush 字体 Font 符号 Symbol 9 8MapBasic的表达式 9 8 1MapBasic的函数MapBasic支持许多不同的函数 每一个函数都有不同的作用 如Sqr 函数计算正方形的面积 而Ucase 函数将文本字符串改成大写 在表达式中引用函数时 程序就调用该函数并返回函数值 9 8 2MapBasic的运算符1 数字运算符 2 字符串运算符字符运算符有 Like 3 日期运算符 表9 3MapBasic的日期运算符 4 比较运算符 表9 4比较运算符 5 逻辑运算符 表9 5逻辑运算符 6 图形运算符 表9 6图形运算符 7 运算符的优先级包含多个运算符的复杂表达式 MapBasic会按运算符的优先级规则来确定运算的先后 优先级最高的是 其次指数 取反 乘法 除法 取余 取整运算 加法 减法 字符连接符 图形运算符 比较运算符 Like Not And 最低的是 Or 9 9分支 循环和其他流程控制 9 9 1分支语句1 If语句 1 If Then 2 If Then Else 3 If Then ElseIf Then 例9 45 下面的例子用来判断当天的日期 若是1月1日 则系统显示一个消息窗 新年好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区干部团建活动方案策划
- 传统店铺装修咨询方案
- 团建场地咨询报价方案
- 施工方案咨询意见
- 合肥铁路声屏障施工方案
- 景区直播营销策划方案
- 在线自学行业市场需求与分析
- 梁-拱组合结构施工方案
- 2023年度自考专业(汉语言文学)模拟试题含完整答案详解(夺冠系列)
- 2024年中医助理医师自我提分评估及答案详解【各地真题】
- 油气、集输、注水站工艺流程图的绘制
- 产科全身麻醉的应用与管理
- YS/T 261-2011锂辉石精矿
- GB 14536.9-1996家用和类似用途电自动控制器电动水阀的特殊要求(包括机械要求)
- 《百团大战》历史课件
- 国学《弟子规》 课件
- 股骨干骨折的护理查房课件
- 新款h2夜视移动电源
- 企业内部控制风险清单
- (完整)脑瘫儿童康复评估量表
- 湘郡培粹实验学校2021-2022学年九年级上学期第一次月考数学试卷
评论
0/150
提交评论