[工程科技]MapBasic编程基础.ppt_第1页
[工程科技]MapBasic编程基础.ppt_第2页
[工程科技]MapBasic编程基础.ppt_第3页
[工程科技]MapBasic编程基础.ppt_第4页
[工程科技]MapBasic编程基础.ppt_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MapBasic编程,1.1 制作菜单栏 1.1.1 制作全新的菜单栏 1.1.2 修改已有菜单栏 1.2 菜单制作 1.2.1 全新菜单的制作 1.2.2 更改原有菜单 1.3 对话框制作 1.3.1 标准对话框,1.3.2 自定义对话框制作 1.3.3 控件的位置和大小 1.3.4 控件类型 1.3.5 控件的初值和终值 1.4 窗口 1.4.1 窗口的大小和位置 1.4.2 地图窗口 1.4.3 浏览窗口,1.4.4 统计窗口 1.4.5 布局窗口 1.4.6 信息窗口 1.4.7 消息窗口 1.5 工具条 1.5.1 工具条的类型 1.5.2 工具条的操作 1.5.3 创建触发式型按钮 1.5.4 创建工具按钮 1.5.5 向“主”工具条添加一个 按钮 1.5.6 选择按钮图表 1.5.7 运行MapBasic应用程序,1.6 MapBasic过程 1.6.1 MapBasic主过程 1.6.2 MapBasic子过程 1.7 MapBasic变量 1.8 MapBasic的表达式 1.8.1 MapBasic的函数 1.8.2 MapBasic的运算符 1.1 分支、循环和其他流程控制 1.1.1 分支语句 1.1.2 循环语句 1.1.3 其他流程控制语句 1.10 MapBasic的表操作 1.11 习题1,1.1 制作菜单栏,菜单栏是MapInfo工作区域顶部的水平条,初始状态下的MapInfo的菜单栏包括“File”,“Edit”,“Objects”,“Query”等。,1.1.1 制作全新的菜单栏,语法: Create Menu Bar As 菜单名 或 ID 菜单号 ,菜单名 或 ID 菜单号.,【例1-1】制作一个全新菜单栏,包含“File”,“Edit”,“Query”,“Map”,“Browse”菜单。 代码如下: Create Menu Bar As “File“,“Edit“,“Query“,“Map“,“Browse“ 图1-1 全新菜单栏,1.1.2 修改已有菜单栏,1. 删除菜单 语法: Alter Menu Bar Remove 菜单名 或 ID 菜单号 ,菜单名 或 ID 菜单号. 【例1-2】在原有菜单栏的基础上,删除“Windows”,“Help”菜单。,代码如下: Alter Menu Bar Remove ID 6, ID 7 图1-2 删除菜单,2. 增加菜单 语法: Alter Menu Bar Add 菜单名 或 ID 菜单号 ,菜单名 或 ID 菜单号. 【例1-3】在原有菜单栏的基础上,增加“DataEntry”菜单。 代码如下: Alter Menu Bar Add “DataEntry“,图1-3 增加菜单 图1-4 在菜单栏中间增加菜单,3. 恢复菜单 语法: Create Menu Bar As Default 若放弃对菜单栏的修改,恢复原有菜单样式,可以运行以下代码: Create Menu Bar As Default,1.2 菜单制作,1.2.1 全新菜单的制作 语法: Create Menu 新菜单名 ID 菜单号As 菜单项1 ID菜单号 Calling handler | As 菜单名 ,菜单项2.,【例1-4】制作全新菜单“DataEntry”。 代码如下: Create Menu “DataEntry“ As 制作“DataEntry”菜单 “Add“ , 菜单有三个菜单项 “Edit“ , “Delete“ Alter Menu Bar Add “DataEntry“ 将菜单添加到菜单栏中 图1-5 制作全新菜单,1.2.2 更改原有菜单,语法: Create Menu 新菜单名 ID 菜单号As 菜单项1 ID菜单项 Calling handler | As 菜单名 ,菜单项2. 【例1-5】更改原有菜单“File”的内容。 代码如下: Create Menu “&File“ As “&New“ , “&Open“ , “&Close“ , “&Save“ , “&Print“ , “&Exit“,图1-6 更改原有菜单,1.3 对话框制作,1.3.1 标准对话框 1. 消息对话框 语法: Note 消息 图1-7 消息对话框 【例1-6】例如显示一个“查询成功!”的消息对话框。 代码如下: Note “查询成功!“,2. 询问对话框 语法: Ask (提示信息,确定文本,取消文本) 【例1-7】下面的例子用生成一个简单询问对话框。 Dim more As Logical more = Ask(“Do you want to continue?“, “OK“, “Stop“) 运行结果如图1-8所示。 图1-8 询问对话框,3. 选择文件对话框 语法: FileOpenDlg(路径,文件名,文件类型,标题) 【例1-8】下面的程序用FileOpenDlg()函数显示提示用户打开一个文件的对话框。 Dim s_filename As String s_filename= FileOpenDlg(“,“,“TAB“,“Open Table“) 运行结果如图1-1所示。,图1-1 选择文件对话框,1.3.2 自定义对话框制作,【例1-1】下面是生成一个自定义对话框的代码: Dialog title “按省份名“ Control Statictext title “请输省份名:“ Control Edittext Control Okbutton Title “确定“ Control Cancelbutton Title “取消“,图1-10 自定义对话框 图1-11 指定位置和大小,1.3.3 控件的位置和大小,控件的大小由Width(宽)和Height(高)控制。位置和大小采用对话框单位为单位,每个对话框单位表示一个字符宽度的1/4或一个字符高度的1/8,以对话框的左上角为原点,它的位置是(0,0)。 【例1-10】下面的例程指定了控件的位置及大小。 Dialog Title “按省份名“ Control StaticText,Title “请输省份名:“ Control EditText Control OkButton Width 20 Height 12 Title “确定“ Position 60,32 Control CancelButton Width 20 Height 12 Title “取消“ Position 100,32 运行结果如图1-11所示。,1.3.4 控件类型,1. 静态文本控件 语法: Control StaticText Position x , y Width宽度 Height高度 ID控件号 Title标题,【例1-11】下面是生成一个静态文本控件的代码: Dialog Control StaticText Title “Enter map title:“ Position 5, 10 Control OkButton 图1-12 静态文本控件 Control CancelButton 运行结果如图1-12所示。,2. 输入文本控件 语法: Control EditText Position x , y Width宽度 Height高度 ID控件号 Value 初始值 Into变量 【例1-12】下面是生成一个输入文本控件的代码: Dialog Control EditText,Control OkButton Control CancelButton 运行结果如图1-13所示。 图1-13 输入文本控件,3. 组合框控件 语法: Control GroupBox Position x , y Width宽度 Height高度 Title标题 【例1-13】下面是生成一个组合框的代码: Dialog Control GroupBox Title “Level of Detail“,Position 5, 30 Height 40 Width 70 Control OkButton Control CancelButton 运行结果如图1-14所示。 4. 单选项组合控件 语法: Control RadioGroup 图1-14 组合框控件 Position x , y ID控件号 Calling过程 Title 字符串表达式 或 From Variable 字符串变量, Value初始选项 Into变量 【例1-14】下面是生成一个单选项组合控件的代码: Dialog Control RadioGroup Title “&Partial Details“ Position 15, 42 Control OkButton Control CancelButton 运行结果如图1-15所示。,5. Picker选取对象类控件 语法: Control PenPicker 或 BrushPicker 或 SymbolPicker 或 FontPicker Position x , y Width 宽度 Height 高度 ID控件号 Calling过程 Value样式表达式 Into样式变量,【例1-15】下面是生成一个文本选取控件的代码: Dialog Control FontPicker Position 140,42 Control OkButton Control CancelButton 运行结果如图1-16所示。图1-16 文本选取控件,6.ListBox列表框控件 语法: Control ListBox Position x , y Width 宽度 Height 高度 ID控件号 Calling过程 Title 字符串表达式 或 From Variable 字符串变量 Value初始选项 Into变量 【例1-16】下面是生成一个列表框控件的代码:,Dialog Control ListBox Title “1st Quarter;2nd Quarter;3rd Quarter;4th Quarter“ Position 10, 12 Height 40 Control OkButton Control CancelButton 运行结果如图1-17所示。 图1-17列表框控件,7. 多重列表框控件 语法: Control MultiListBox Position x , y Width 宽度 Height 高度 ID控件号 Calling过程 Title 字符串表达式 或 From Variable 字符 串变量 Value初始选项 Into变量,【例1-17】下面是生成一个多重列表框控件的代码: Dialog Control MultiListBox Title “Streets;Highways;Towns;Countries;States“ Position 10, 12 Width 65 Height 35 Control OkButton Control CancelButton 运行结果如图1-18所示。 图1-18 多重列表框控件,8. 下拉列表框控件 语法: Control PopupMenu Position x , y Width宽度 ID 控件号 Calling 过程 Title Title 字符串表达式 或 From Variable 字符串变量 Value 初始选项 Into 选项变量 ,【例1-18】下面是生成一个下拉列表框控件的代码: Dialog Control PopupMenu Title “Town;County;Territory;Region;Entire state“ Position 10, 150 Control OkButton Control CancelButton 图1-11 下拉列表框控件,1. 复选框控件 语法: Control CheckBox Position x , y Width 宽度 ID 控件号 Calling过程 Title标题 Value逻辑值 Into逻辑变量 ,【例1-11】下面是生成一个复选框控件的代码: Dialog Control CheckBox Title “Include &Legend“ Position 115, 155 Control OkButton 图1-20 复选框控件 Control CancelButton 运行结果如图1-20所示。,10. 按钮控件 MapBasic包含两个按钮:OkButton和CancelButton。 1.3.5 控件的初值和终值 大部分控件都有一可选的Value从句,这个从句定义了对话框第一次显示时该控件的状态。 大多控件都有一Into从句,这个从句后面有一个变量,MapInfo用这个变量存储对话框的数据。如果有Into从句,用户通过单击“Ok”按钮确认该对话框后,MapInfo会用Into后的变量存储控件的最终值。,1.4 窗口,MapBasic应用程序能够控制所有的 MapInfo窗口,包括标准窗口、地图窗口、浏览 (Browse)窗口、布局(Layout)窗口、专题图 (Graph)窗口、信息窗口。 1.4.1 窗口的大小和位置 窗口的大小和位置可以通过两种方法控制: 在打开的窗口的同时指定窗口的大小和 位置。,【例1-20】下面的语句指定地图窗口及布局窗口的位置及大小: Open Table “world“ Open Table “cust1114“ As customers Map from customers, world Position (1,1) Width 3 Height 2 Layout Position (0, 0) Width 2 Height 4, 在打开窗口后调整窗口的位置和大小。使用Set Window语句。 语法: Set Window 窗口号 Position ( x , y ) Units 纸面单位 Width 窗口宽度 Units 纸面单位 Height 窗口高度 Units 纸面单位 ,1.4.2 地图窗口 1. 图层的操作 增加图层的语法为: Add Map Window 窗口号 Layer 表1 , 表2 . Auto Animate ,2. 设置地图投影 可以使用Set Map CoordSys. 语句改变地 图投影,若要保存投影,使用Commit Table .As.CoordSys语句。 3. 制作专题图 专题图有六种形式。每种都可以用相应的 MapBasic语句实现。 (1) 范围值 (ranges of values) 语法: Shade Window 窗口号 图层号 或 图层名 With 表达式, Ignore 忽略的数值 Ranges Apply Color或 Size或 All 【例1-22】下面的例子是根据美国1110年人口生成的范围值图,总共有三个范围,每个范围用不同颜色、样式填充。 Open Table “ states “ Map From Shade states With Pop_1110 Ranges 4827000:21280000 Brush (2,0,201326511) , 1783000: 4827000 Brush (8,0,16777215) , 441000: 1783000 Brush (5,0,16777215),(2) 独立值 (individual values) 语法: Shade Window 窗口号 图层号 或 图层名 With 表达式 Ignore 忽略的数值 Values 字段1 Pen. Line. Brush. Symbol. , 字段2 Pen. Line. Brush. Symbol. . ,【例1-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“,(3) 点密度 (dot density) 语法: Shade Window 窗口号 图层号 或 图层名 With 表达式 Density 数值 : 点的尺寸 Color 颜色号 【例1-24】下面的例子根据人口制作点密度图,60000个人用一个4个像元大小的点表示。 Open Table “States“ Map From states Shade states With Num_HH_10 Density 60000:4,(4) 等级符号(graduated symbols) 语法: Shade Window 窗口号 图层号 或 图层名 With 表达式 Graduated 最小值:符号大小 最大值:符号大小 Symbol . . . Inflect Symbol . . . Vary Size By “ LOG“ 或 “SQRT“ 或 “CONST“ ,【例1-25】下面的例子建立等级符号表示利润和亏损。商店盈利则用绿色上三角表示,商店亏损则用红色下三角表示。 Shade stores With Net_Profit Graduated 0.0:0 15000:24 Symbol(36, GREEN, 24) Inflect Symbol(37, RED, 24) Vary Size By “SQRT“,(5) 饼图 (pie charts) 语法: Shade Window 窗口号 图层号 或 图层名 或 选择集 With 表达式1,表达式2. Half Pie Angle 角度 Counter Fixed Max Size 饼尺寸 Units 单位名称 At Value 最大值 Vary Size By “ LOG“ | “SQRT“ | “CONST“ ,【例1-26】下面的例子产生的饼图为同一尺寸。 Shade sales_15 With phone_sales, retail_sales Pie Fixed Max Size 0.25 Units “Inch“ 【例1-27】下面的例子创建一个变化大小的饼图。如果记录的总和为85000,它对应的饼图为0.25英寸,记录的值越小,饼图也越小。 Shade sales_15 With phone_sales, retail_sales Pie Max Size 0.25 Units “Inch“ At Value 85000,【例1-28】下面的例子创建专题图,将饼图放置在图形对象中央。 Shade sales_15 With phone_sales, retail_sales Pie Angle 180 Max Size 0.5 Units “Inch“ At Value 85000 Vary Size By “SQRT“ Border Pen (1, 2, 0) Position Center Above Style Brush(2, RED, 0), Brush(2, BLUE, 0),(6) 直方图 (bar charts) 语法: Shade Window 窗口号 图层号 或 图层名 或 选择集 With 表达式1,表达式2. Bar Normalized 或 Stacked Bar Fixed Max Size 最大尺寸 Units 单位名称 At Value 最大值 Vary Size By “ LOG“ 或 “SQRT“ 或 “CONST“ ,【例1-21】下面的例子创建直方图,并将直方图定位在地图对象中心点上方, Shade sales_13 With phone_sales, retail_sales Bar Max Size 0.4 Units “Inch“ At Value 1245000 Vary Size By CONST Border Pen (1, 2, 0) Position Center Above Style Brush(2, RED, 0), Brush(2, BLUE, 0),1.4.3 浏览窗口 语法: Browse 表达式列表 From 表 Position ( x , y ) Units 纸面单位 Width 窗口宽度 Units 纸面单位 Height 窗口高度 Units 纸面单位 Row 行号 Column 列号 Min 或 Max ,【例1-21】下面的例子仅显示省份和人口。 Browse 省份,人口 from 政区 图1-21 显示所有字段 图1-22 显示选择字段,【例1-31】下面的例子将第十九行和第二列显示在浏览窗口的左上角。 Browse * from World Row 11 Column 2 图1-23 浏览窗口,【例1-32】下面的例子指定了表达式,用人口除以面积得到密度这一项,并将该表达式的名称改为“Density”(“密度”)。 Open Table “world“ Browse country, population, population/area(obj, “sq km“) “Density“ From world,1.4.4 统计窗口 语法: Graph 标注列, 表达式1,表达式2. From 表 Position ( x , y ) Units 纸面单位 Width 窗口宽度 Units 纸面单位 Height 窗口高度 Units 纸面单位 Min 或 Max ,【例1-33】下面的例子创建人口统计图。 Graph 人口 From 政区 运行结果如图1-24所示。 图1-24 统计窗口,1.4.5 布局窗口 语法: Layout Position ( x , y ) Units 纸面单位 Width窗口宽度 Units 纸面单位 Height 窗口高度 Units 纸面单位 Min 或 Max 【例1-34】例如下面的例子选择布局窗口中所有的对象。 Select * From Layout1,【例1-35】下面的例子创建一个布局窗口。 Layout Position (0, 0) Width 2 Height 4 运行结果如图1-25所示。 图1-25 布局窗口,1.4.6 信息窗口 【例1-36】下面的例子创建一个信息窗口。 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 1 Font MakeFont(“Arial“,1,10,BLACK,WHITE) Width 3 Units “in“ Height 1.2 Units “in“ Position (2.5,1.5) Units “in“ Front,1.4.7 消息窗口 语法: Print 消息 在窗口信息中实现换 行,可以用下面的语句: 图1-26 消息窗口的换行 Print “Map Layers:“ + Chr$(10) + “ World, Capitals“ 运行结果如图1-26所示。图1-27设置消息的字体及颜色,【例1-37】下面的例子创建一个消息窗口,设置了大小和字体样式。 Include “MAPBASIC.DEF“ needed for color name BLUE Open Window Message open Message window Set Window Message Font (“Helv“, 1, 10, BLUE) Helvetica bold. Position (0.25, 0.25) place in upper left Width 3.0 make window 3“ wide Height 1.0 make window 1“ high Print “MapBasic Dispatcher now on line“ 运行结果如图1-27所示。,1.5 工具条,图1-28 标准工具条 图1-21 绘图工具条 图1-30 主工具条,1.5.1 工具条的类型 1. PushButtons按钮 这种叫做触发式按钮。当用户按下ToolButtons按钮后,按钮立即复位,并调用相应的处理程序。 2. ToggleButtons按钮 这种按钮叫做开关式按钮。当用户单击ToggleButtons按钮时,这种按钮会在按下与没按下之间切换。 3. ToolButton按钮 这种称为工具按钮。当用户单击这种按钮时,它处于活动状态,直到用户单击了另外的按钮。,1.5.2 工具条的操作 1. 创建工具条 创建一个新工具条的语句为: Create ButtonPad 2. 激活工具条 创建一个工具条,并不能立刻显示在窗口中,需要使用下面的语句激活: Alter ButtonPad 3. 激活按钮 4. 按钮的返回值,1.5.3 创建触发式型按钮 1.5.4 创建工具按钮 1.5.5 向“主”工具条添加一个按钮 1.5.6 选择按钮图表 【例1-41】下面的语句定义了一个按钮,并为按钮选择了一个图标,图标代码定义为MI_ICON_INFO: Alter ButtonPad “主“ Add Separator Add PushButton Icon MI_ICON_INFO Calling procedure_name,图1-31 图标例子窗口, 运行图标示例程序“ICONDEMO.MBX”。显 示图标例子菜单,如图1-31所示。 单击图标示例菜单,选择一个菜单项,出现 一个自定义图标按钮盒。如图1-32所示。 单击某个图标,出现如图1-33所示的对话框。 将对话框中的图标代码复制到剪贴板中。 打开MapBasic程序,用Ctrl+V键将 图标代码粘贴到应用程序中。,图1-32 自定义图标按钮盒 图1-33 图标代码对话框,1.5.7 运行MapBasic应用程序 Startup是一个特殊的工作空间,如果该工 作空间存在于用户的系统中,MapInfo将自动加 载该工作空间,若Startup工作空间中有Run Application语句,则MapInfo将自动运行指定的程 序。 例如,用户要运行应用程序Query,可以创 建如下Startup工作空间: !Workspace !Version 400 !Charset Neutral Run Application “Query.mbx“,1.6 MapBasic过程,1.6.1 MapBasic主过程 Declare Sub Main 声明一个主过程 Sub Main 主过程开始 Note “Testing, one two three.“ 显示 一个消息 End Sub 结束主过程,1.6.2 MapBasic子过程 子过程的声明 方法如下: Declare Sub 子过程名 图1-34 查询菜单,图1-35 ProvinceName子过程,1.7 MapBasic变量,MapBasic变量包括全局变量(Global)和局部变量(Dim)。全局变量在整个程序中起作用,而局部变量仅在声明该变量的过程中其作用。 变量的类型有短整型(SmallInt)、整型(Integer)、浮点型(Float)、定长字符型(String)、可变长字符型(String*n)、布尔型(Logical)、日期型(Date)、对象型(Object)、列变量(Alias)、线型(Pen)、填充(Brush)、字体(Font)、符号(Symbol)。,1.8 MapBasic的表达式,1.8.1 MapBasic的函数 MapBasic支持许多不同的函数。每一个函数都有不同的作用,如Sqr()函数计算正方形的面积,而Ucase$()函数将文本字符串改成大写。在表达式中引用函数时,程序就调用该函数并返回函数值。,1.8.2 MapBasic的运算符 1. 数字运算符,2. 字符串运算符 字符运算符有“+”、“&”、“Like”。 3. 日期运算符,表1-3 MapBasic的日期运算符,4. 比较运算符,表1-4 比较运算符,5. 逻辑运算符,表1-5 逻辑运算符,6. 图形运算符,表1-6 图形运算符,7. 运算符的优先级 包含多个运算符的复杂表达式,MapBasic会按运算符的优先级规则来确定运算的先后。 优先级最高的是“( )”,其次指数、取反、乘法、除法、取余、取整运算、加法、减法、字符连接符、图形运算符、比较运算符、Like、Not、And,最低的是“Or”。,1.1 分支、循环和其他流程控制,1.1.1 分支语句 1. If语句 (1) If.Then (2) If.Then.Else (3) If.Then.ElseIf.Then 【例1-45】下面的例子用来判断当天的日期,若是1月1日,则系统显 示一个消息窗“新年好”;若是2月14日,则系统显示一个消息窗 “情人节好”;若是12月25日,则系统显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论