上节总结: 1、 Map basic的软件集成环境: (1)文本编辑器:用于程序的编辑与修改 (2)程序编译器:用于源程序编译,生成可执行程序 (3)程序链接器:将若干独立的模块链接成一个应用程序; (4)联机帮助:提供 Mapbasic每条语句或函数的详细说明资料 mb文件→mbx文件;mb文件→mbo文件十mbp文件→mbx文件 2、创建、编译和链接项目文件( Project File) link]-Application-Module mbp文件十mbo文件-mbx可执行文件(实例) 3、程序组织: Include“ mapbasic. def Type .. End Type Declare/Declare function Define/Global Sub main .. End sub Sub . End sub Function.. End function
上节总结: 1、MapBasic的软件集成环境: (1)文本编辑器:用于程序的编辑与修改; (2)程序编译器:用于源程序编译,生成可执行程序; (3)程序链接器:将若干独立的模块链接成一个应用程序; (4)联机帮助:提供MapBasic 每条语句或函数的详细说明资料 mb文件→mbx文件;mb文件→mbo文件+mbp文件→mbx文件 2、创建、编译和链接项目文件(Project File ): [link]-Application-Module mbp文件+mbo文件-mbx可执行文件 (实例) 3、程序组织:Include “mapbasic.def” Type … End Type Declare/Declare function Define /Global Sub Main … End Sub Sub … End Sub Function … End Function
4、事件处理程序: 单击鼠标或其他由用户发出的动作称为事件。 事件处理程序: Win closedhandler、 Win Changedhandler、 ToolHa Declare sub main 程序 declare sub ddd(ByUal x as date, ByUal y as date) sub main 调用 只在cae2010, unDate End sub sub ddd( ByUal x as date, ByUal y as date) 分 note"The report date range will be: " Strs(x)&"through"& Strs(y) isst 的双引Len Note“ The Table““ World”” is already open” 这个语句的运{anro 冈 The Table“w The report date range will be: 2005-01-01Through2005-10-11 7、值参数传递 (1)在Ca1语句 确定 以指定一个 变量名、常量值或其他的表达式 (2)如果在子过程中赋了一个新的值给值参数,将不影响调用者。换 句说话,子过程不能通过值参数把一个值返回给调用者
4、事件处理程序: 单击鼠标或其他由用户发出的动作称为事件。 事件处理程序:WinClosedHandler、 WinChangedHandler、 ToolHandler 、EndHandler 等 程序运行时,MapBasic自动调用相应程序,不需要在主过程中调用 ,只在程序开头声明即可。 5、对于定长字符串变量,MapBasic总是用空格去填充不足部分; 6、如果在字符串常量里本身就有双引号,那么需要插入两个连续 的双引号到这个字符串中,例如: Note “The Table ““World”” is already open.” 这个语句的运行结果是显示下面的一条信息: The Table “World” is already open. 7、值参数传递 (ByVal) (1)在Call语句中不必一定要为参数指定一个变量名。可以指定一个 变量名、常量值或其他的表达式。 (2)如果在子过程中赋了一个新的值给值参数,将不影响调用者。换 句说话,子过程不能通过值参数把一个值返回给调用者
8、访问表的指定列: tablename columnname; tablename coln; tablename. col(n) 9、创建一个新表: Create table tablename 用 Create Index给一个表增加索引 Create Index on Cust(CustID) 用 Create Map使一张表可地图化 Create Map For Cust Coordsys Earthy 10、修改表结构: Alter Table 修改之前应该先保存该表: Commit Table 或放弃当前编辑: Rollback Table 11、顺序文件的输入输出: Open File filename For Input/Output/Append As #1 用Iput或 Lineinput语句读文件,用 Writer语句写数据到文件中。 12、随机文件的输入输出 Open File“ filename” For randomas#Len= length 用Get和Pu语句读写数据 13、二进制文件的输入输出: Open File“ filename” For Binary As#1 可以用Get和Pu语句读写数据 14、如何查询、创建、修改地图对象:Obi
8、访问表的指定列: tablename.columnname; tablename.coln; tablename.col(n) 9、创建一个新表:Create table tablename 用Create Index给一个表增加索引 Create Index on Cust(CustID) 用Create Map使一张表可地图化 Create Map For Cust Coordsys Earthy 10、修改表结构:Alter Table 修改之前应该先保存该表:Commit Table 或放弃当前编辑:Rollback Table 11、顺序文件的输入/输出: Open File filename For Input/Output/Append As #1 用Input#或Line input#语句读文件,用Write#语句写数据到文件中。 12、随机文件的输入/输出: Open File “filename” For Random As #1 Len=length 用Get和Put语句读写数据 13、二进制文件的输入/输出: Open File “filename” For Binary As #1 可以用Get和Put语句读写数据 14、如何查询、创建、修改地图对象:Obj
第六讲 Mapinfo集成地图开发 创建用户界面 1.1菜单(menu) 1.2工具条( Button pads) 1.3对话框( Dialog 1.4窗口( Windows) 、 MapInfo集成地图开发 2.1集成地图开发的概念 22 MapInfo集成地图开发过程 23回调( Callbacks) 24程序运行语句
•第六讲 MapInfo集成地图开发 一、创建用户界面 1.1 菜单(menu) 1.2 工具条(ButtonPads) 1.3 对话框(Dialog) 1.4 窗口(Windows) 二、 MapInfo集成地图开发 2.1 集成地图开发的概念 2.2 MapInfo集成地图开发过程 2.3 回调(Callbacks) 2.4 程序运行语句
创建用户界面 1.1菜单(menu) Declare sub addsub Include "MENU DEF Declare sub edi tsub Declare Sub delsub Create Menu" file"As New Calling M_ FILE NEW Create Menu"DataEntry" As "Open"+Chr$(9)+ Ctrl+o/WO"Calling M FILE OPEN Add" Calling addsub Edit" Calling editsub Close Calling M FILE CLOSE " Delete All"ID 101 Calling delsub Save+Chrs(9)+Ctrl+s /w"s Calling M FILE SAve Remove the Help menu (Print" Calling M FILE PRINT Alter Menu Bar remove ID 7 e Exit" Calling M FILE EXIT Add both the new menu and the Help menu Alter Menu Bar Add"DataEntry", ID 7 ④增加/ Create Menu" Mapper shortcut" ID17a4s"(- lenuname'” 建立好的菜单需要把它加到菜单栏上才能看得见 Alter N Create Menu File"As name1” New Calling M FILE NEW ⑤修 Open"+Chrs(9)+Ctrl+O/W"0"Calling M_FILE_OPEN, ck/Uncheck 灰化一个菜单项:在菜单项名字的第一个字母前加“(” 快捷键的定义:用键盘来使用菜单,在想定义的快捷键的字母前加字符& 热键的定义:执行菜单命令的组合键
一、创建用户界面 1.1 菜单(menu) 菜单栏-Menu Bar ;菜单-Menu ; 菜单项-Menu Item ①新建菜单:Create Menu “MenuName” as “SubMenuName” calling Sub ②新建菜单栏:Create Menu Bar As 恢复MapInfo标准菜单栏:Create Menu Bar As Default ③增加/移除菜单项:Alter Menu add / remove 加分割线 “(-” ④增加/移除菜单:Alter Menu Bar Add / remove “Menuname” 建立好的菜单需要把它加到菜单栏上才能看得见. Alter Menu “Menuname” Add “Menuname1” As “Menuname1” ⑤修改菜单项:Alter Menu Item 过程 Enable/Disable/Check/Uncheck 灰化一个菜单项:在菜单项名字的第一个字母前加“(” 快捷键的定义:用键盘来使用菜单,在想定义的快捷键的字母前加字符& 热键的定义:执行菜单命令的组合键
创建用户界面 1.2工具条( Button pads) Pu PushButta Pad"Utils"As Create But to 特T特 HelpMsg "Choose this but ton to display query dialog Calling but ton sub proc Icon I ICON ZOOM QUESTION Tool But ton HelpMsg "Use this tool to draw a new route 钮即 按下 Calling tool sub proc Ic MI ICON CROSSHAIR DrawMode DM CUSTOM LINE ToggleBut ton HelpMsg "Turn proximity checking on/of f 特户新 Calling toggle prox check 直到 用 Icon MI ICON RULER Check Title "Utilities Width 3 Show ton
·PushButton——触发式按钮。如图层控制按钮. 特点:用户单击一个触发式按钮时,按钮仍会弹回来。 ·ToggleButton——开关式按钮。如图例窗口显示/隐藏按钮. 特点:用户单击按钮时,按钮变成两种状态中的一种,即 按下或弹起。 ·ToolButton——工具按钮,如选择按钮. 特点:用户单击按钮时,一个工具将处于激活状态,直到 用户选择了另一个按钮。 新建工具条: CreateButtonPad “名称” as PushButton/ToggleButton/ToolButton 一、创建用户界面 1.2 工具条(ButtonPads)
修改工具条的属性: Alter button pad“主/绘图”Add/ Remove 可以重定位、显示隐藏工具条或增加删除工具条中的工具 修改单个工具的状态: Alter button 查询用户使用按钮的信息: Commandino() 工具条信息: Button PadInfo0 恢复标准工具条: Create Button Pads As default Alter But tonPad Id 3 Add Separator ToolBut ton Icon MI ICON CROSSHAIR HelpMsg "Draw a distance scale on a map\sCale Bar Cursor MI CURSOR CROSSHAIR Drawlode DM CUSTOM PoINt Calling custom tool routine Include "mapbasic. def If But tonPadInfo( Main". BTNPAD INFO FLOATING)Then then the Main pad is floating: now let's dock it Alter But tonPad Main" ToolbarPosition(0,0) Fixed End工f
修改工具条的属性:AlterButtonPad “主/绘图” Add/Remove 可以重定位、显示/隐藏工具条或增加删除工具条中的工具。 修改单个工具的状态:AlterButton 查询用户使用按钮的信息:Commandinfo() 工具条信息:ButtonPadInfo() 恢复标准工具条:Create ButtonPads As Default
创建用户界面 1.3对话框( Dialog) 1、标准对话框 Do you want to continue? (1)询问对话框:Ask( prompt,ok Dim more As Logical Stop more= Ask("Do you want to continue?",OK,"Stop (2)显示信息对话框: Note message Mapin This is sub1! Note Total of records processed: Strs( (3)状态条: Progress Bar ProgressBar " Writing data."Calling (4)FileOpen DIg( path, filename Dim s filename As string filename=File Open DIg(", "" "TAE 5) File SaveAsDg( path, filename, 取消二
一、创建用户界面 1.3 对话框(Dialog) 1、标准对话框: (1)询问对话框:Ask ( prompt , ok_text , cancel_text ) Dim more As Logical more = Ask("Do you want to continue?", "OK", "Stop") (2)显示信息对话框:Note message Note "Total # of records processed: " + Str$( i_count ) (3)状态条:ProgressBar ProgressBar "Writing data..." Calling write_out Range 600000 (4)FileOpenDlg( path , filename , filetype , prompt ) Dim s_filename As String s_filename = FileOpenDlg("","","TAB","Open Table") (5)FileSaveAsDlg ( path , filename, filetype, prompt )
2、创建用户自定义对话框:面 Dialog 请输入: ITitle title [Width w[ Height 确定取消 y I Calling ha Dialog Control Title "Search Control staticText I Control Title "Enter string to find Button utton i cancelButton MapBasic对话相 CheckBox GroupBox RadioGroup If EditText StaticText PenPicker/BrushPicker/SymbolPicker/ FontPicker ListBox multilist Box 3、修改对话框: Enc PopupMenu Alter MapInfo Dialog dialog D Alter MapInfo Dialog dialog D Default
2、创建用户自定义对话框: Dialog [ Title title ] [ Width w ] [ Height h ] [ Position x , y ] [ Calling handler ] Control control_clause [ Control control_clause . . . ] MapBasic对话框控件类型:Control 子句控制 3、修改对话框: Alter MapInfoDialog dialog_ID Alter MapInfoDialog dialog_ID Default
创建用户界面 1.4窗口( Windows) Integer Map、 Bro ope2nTa6 world Icter 1、显示/隱 Map From world win id FrontWindow( Map Basic S Set Window win_id Width 5 Height 3 b Message 2、新建窗口: Map from 统计窗口 :Open Table"world tion Browse ht 4 country 创建重新分 population POP rea(ob],"sg km")Density Create re From world umn 创建图例窗口: Create Legend I From Window windOw ID I Show Hide
一、创建用户界面 1.4 窗口(Windows) Map、Browse、Graph、Layout;Create Redistricter 1、显示/隐藏窗口:Open/Close Window MapBasic、Statistics、Legend、Info、Ruler、Help、Message 2、新建窗口: Map From 统计窗口:Graph Country, Population From Selection Layout Position (0, 0) Width 2 Height 4 创建重新分区窗口: Create Redistricter source_table By district_column 创建图例窗口:Create Legend [ From Window window_ID ] [ { Show | Hide } ]