首页 百科知识 用户菜单设计

用户菜单设计

时间:2022-06-19 百科知识 版权反馈
【摘要】:一、用户菜单设计菜单是图形用户界面应用程序的重要元素,是执行用户旨意的直接界面。利用MapBasic提供的语句和函数,可以修改MapInfo标准菜单或建立全新的用户自定义菜单。]其中,handler为子过程名或标准的MapInfo命令代码,submenuname为被删除的子菜单名。]其中,newmenuname为菜单名,menuitem为菜单项,menuname为下一级子菜单名。Calling子句为菜单项定义一个处理程序,如果用户选择该菜单项,MapInfo则调用指定的处理程序。

一、用户菜单设计

菜单是图形用户界面应用程序的重要元素,是执行用户旨意的直接界面。MapInfo菜单由菜单栏、菜单和菜单项三部分组成。菜单栏是MapInfo工作区域顶部的水平条,菜单是菜单栏上可以下拉的命令列表,菜单项是出现在菜单列表中的各项命令。利用MapBasic提供的语句和函数,可以修改MapInfo标准菜单或建立全新的用户自定义菜单。

1.添加菜单项

向已存在的菜单中增加菜单项,可以使用Alter Menu语句。其语法形式为:

Alter Menu{menuname|ID menu_id}

  Add menudef[,menudef…]

  newmenuitem

  [ID menu_item_id]

  [HelpMsg help]

  [{Calling handler|As menuname}]

其中,menuname为已存在的菜单名,menu_id为标准菜单的ID号,newmenuitem为一个字符串,表示添加到指定菜单中的菜单项,menu_item_id设置了自定义菜单项识别号,help为一个字符串,当菜单项明亮化时显示的状态条信息,handler表示调用该菜单项执行的操作,可以是一个子过程、标准的MapInfo命令或是通过调用OLE或DDE处理菜单事件的特殊语句。

下列语句加一菜单项到"File"菜单:

Alter Menu"File"Add

 "Special"Calling sub_procedure_name

2.删除菜单项

使用Alter Menu语句可以向已存在的菜单中删除菜单项。其语法形式为:

Alter Menu{menuname|ID menu_id}

 Remove{handler|submenuname|ID menu_item_id}

    [,{handler|submenuname|ID menu_item_id}…]

其中,handler为子过程名或标准的MapInfo命令代码,submenuname为被删除的子菜单名。

下面的语句从"Edit"菜单删除"Undo"菜单项:

Alter Menu ID 2 Remove M_EDIT_UNDO

3.创建新菜单

使用Create Menu语句可以创建一个全新的菜单。其语法形式为:

Create Menu newmenuname[ID menu_id]As

  menuitem[ID menu_item_id][HelpMsg help]{Calling handler|As menuname}

  [,menuitem…]

其中,newmenuname为菜单名,menuitem为菜单项,menuname为下一级子菜单名。

如果Create Menu语句的newmenuname与已有的MapInfo菜单名(如File)相同,则语句重新定义下拉式菜单,否则Create Menu建立一个完整的新菜单。

Create Menu语句并不会显示新建菜单,新菜单必须在Alter Menu Bar或Create Menu Bar语句执行后才显示。但是,如果Create Menu修改了已存在菜单,而这个已有菜单已经是菜单条的一部分,则修改后即可显示。

在新菜单里包含分级菜单,应该使用As子句。As子句后的下一级子菜单名必须是已定义的菜单。

下列语句建立了一个SpacialQuery菜单,然后把这个菜单作为Query菜单的子菜单:

Create Menu"SpacialQuery"As

  "PointQuery"Calling pointquery_sub

  "RectQuery"Calling rectquery_sub

Create Menu"Query"As

  "AttributeQuery"Calling attributequery_sub

  "SpacialQuery"As"SpacialQuery"

4.修改菜单项

修改一个菜单项可以使用Alter Menu Item语句,通过选用相应的子句,可以对一个菜单项进行可用或不可用、可复选或不可复选以及重命名等操作。Alter Menu Item语句的语法形式为:

Alter Menu Item{handler|ID menu_item_id}

  {[Check|Uncheck]|

  [Enable|Disable]|

  [Text itemname]|

  [Calling handler|As menuname]}

其中,handler为子过程名或标准的MapInfo命令代码,menu_item_id为菜单项标识,itemname为菜单项新的名称,menuname为一个已存在菜单名。

Alter Menu Item语句可修改菜单的一个或多个菜单项。如果Alter Menu Item语句包括处理过程名,则MapInfo改变所有调用该过程的菜单项;如果语句包括ID子句,则MapInfo只修改menu_item_id指定的菜单项。

Check子句和Uncheck子句控制是否在菜单上显示选中标记。Disable和Enable子句控制菜单项可用与不可用。Calling子句为菜单项定义一个处理程序,如果用户选择该菜单项,MapInfo则调用指定的处理程序。

5.重新定义菜单栏

从菜单栏中增加或删除菜单可以使用Alter Menu Bar语句,该语句的语法形式为:

Alter Menu Bar{Add|Remove}

  {menuname|ID menu_id}

  [,{menuname|ID menu_id}…]

其中,menuname为有效的菜单名,menu_id为菜单的ID标识。

下列语句首先将Query菜单从菜单栏中删除,然后又将它加入到菜单栏中(Query菜单此时在菜单栏的右端):

Alter Menu Bar Remove"Query"

Alter Menu Bar Add"Query"

如果想重新安排菜单栏的顺序,或创建一个全新的菜单栏,可以使用Create Menu Bar语句。如:Create Menu Bar As"File","Edit","Query","Help"。

要恢复MapInfo标准菜单,使用Create Menu Bar As Default语句即可。

6.定义快捷键和热键

快捷键是直接在键盘上操作菜单或菜单项的组合键。快捷键用带下画线的字母表示。要给一个菜单项定义快捷键,在它的字母前直接放置一个&符号即可。下例将"C"键定义为"TextBox"菜单项的快捷键,当"TextBox"菜单被激活时,直接可以用C键来选择该菜单项。

Create Menu"TextBox"As

"&Create Text Boxes…"Calling creat_sub

热键是让用户在不激活菜单的情况下,就可以执行菜单命令的组合键。下面的语句给Open菜单项定义了热键(Ctrl-O):

Create Menu"File"As

"Open"+Chr$(9)+"Ctrl+O/W^O"Calling M_FILE_OPEN

其中,Chr$(9)表示插入一个tab字符,“/W”表示这是Windows版本的MapInfo热键代码,“^”表示Ctrl键,整个“/W^O”是MapInfo的热键代码,表示“Ctrl+O”。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈