1、第9章 菜单 菜单是PowerBuilder系统创建交互式应用程序最主要对象之一。除了子窗口和响应窗口外,其它窗口都能够拥有菜单,用户能够经过选择菜单项完成所需功效。9.1菜单基本概念 9.1.1 菜单基本组成 菜单(Menu):应用或窗口中供用户选择命令和选项列表。菜单中选项通常就是相关命令,与工具栏上对应按钮有相同功效。菜单栏(Menu Bars):窗口上部条形栏,栏中横向显示可选择菜单项。菜单项(Menu Item):菜单中能够选择项,菜单项能够是菜单栏、下拉菜单或级联菜单中一项。菜单项是组成菜单最小单位。菜单项由三部分组成:文本、名称和脚本。文本是显示在屏幕上内容,能够是文字、字符或符
2、号,名称标识菜单项,供程序设计者使用,默认名称前缀是m_。工具栏(Tools Bar):由图标按钮组成栏,每个图标都对应一个菜单项。结束放映第一页上一页下一页最终一页第1页9.1.2 菜单类型(1)下拉菜单下式菜单出现在某个菜单项下面,经过点击鼠标访问,也可在按下Alt键同时按下带有下划线字符来访问。(2)级联菜单级联菜单普通都隶属一个父菜单项,通常在父菜单项右边有一个向右箭头,经过单击这个右箭头就能够访问级联菜单。9.1.3 菜单特征 访问菜单中菜单项普通经过点击鼠标来完成,有时也可经过键盘动作来触发;菜单项普通用于执行命令,有时是为了表示一个状态(选中和未选中)有菜单项前面带有符号()。使
3、用键盘访问菜单项,可经过加速键或快捷键来完成。(1)加速键加速键以带下划线字母表示;当菜单项已经显示出来情况下,能够按加速键快速访问对应菜单命令,加速键使得经过键盘使用菜单更方便。(2)快捷键快捷键无需打开菜单,即在菜单项并不显示出来情况下,就能够使用对应键盘按键组合执行菜单命令;对于使用频繁菜单命令就能够设置快捷键。结束放映第一页上一页下一页最终一页第2页9.1.4 设计一个菜单 使用PowerBuilder环境中菜单画板,能够自由地设计菜单,为方便用户,在设计时应遵照以下约定。(1)应尽可能防止罗列多级菜单。(2)菜单应尽可能简单一致。(3)相关菜单项应放在一个下拉菜单中,方便于记忆和使用
4、。(4)为菜单项定义加速键和快捷键,为菜单项定义对应工具栏图标按钮。(5)在创建菜单前,决定菜单项应何时被选中,何时不可见,或不可用,并在应用中给予适当提醒。(6)应使用标准加速键、快捷键和工具栏。如按下F1键,即可打开帮助文件。(7)尽可能使用分隔符“-”和省略号“”。将功效相关选项划分在一个区域内;若选项执行结果是打开另一个窗口或对话框,那么选项名称最好以省略号结尾。结束放映第一页上一页下一页最终一页第3页9.2 创建菜单 9.2.1 进入菜单画板(1)选择菜单【File|New】,在出现对话框中选择PBObject标签页。(2)在PowerBuilder Object标签页中,选择Men
5、u图标后,再选择菜单所在目标文件后,点击OK按钮。默认菜单画板有四个视窗,分别是WYSIWYG视窗、Tree视窗、Properties视窗和Scipt视窗。WYSIWYG(What You See Is What You Get)视窗使得开发人员在设计时看到菜单和运行时菜单一样;Tree视窗是以树状形式表示菜单之间级联关系。在创建和修改菜单时,在这两个窗口中进行操作是等同,在WYSIWYG中修改与在Tree中修改是一样。Properties视窗用于定义菜单项属性,Scipt视窗用于编写程序脚本。菜单窗口以下页图所表示。结束放映第一页上一页下一页最终一页第4页9.2.1 进入菜单画板结束放映第一
6、页上一页下一页最终一页第5页9.2.2 创建一个新菜单 创建一个新菜单步骤以下:(1)进入菜单画板。(2)添加菜单条上菜单项。(3)添加下拉菜单项。(4)添加级联菜单项。(5)为菜单项定义属性(6)编写脚本(7)保留菜单9.2.3 在当前菜单项下添加同级菜单项(1)添加菜单条中第一项在WYSIWYG视窗中,选择untitled,点击右键,在弹出快捷菜单中选择Insert Submenu Item菜单项。在出现空白方框内输入要显示文本。然后按回车。若按下Tab键,可添加同级其它菜单项。结束放映第一页上一页下一页最终一页第6页9.2.3 在当前菜单项下添加同级菜单项选择菜单栏中某项后,点击右键选择
7、Insert Menu At End或Insert Menu Item菜单项,输入显示文本即可。9.2.4 在当前菜单项下添加子菜单项选择某个菜单项后,点击右键选择Insert SubMenu Item,就会在当前菜单项下添加一个子菜单。同9.2.3节。9.2.5 删除菜单项选择某个菜单项后,点击右键,选择Delete菜单项,就会删除当前菜单项。9.2.6 添加下拉菜单项添加方法如同9.2.4节所述。项目深入一个层次,出现在菜单栏某个菜单项下面。9.2.7 添加级联菜单项添加方法如同9.2.4节所述。项目深入两个层次,也称二级菜单。结束放映第一页上一页下一页最终一页第7页9.2.8 经过继承创
8、建一个菜单 1继承菜单(1)选择菜单【File|Inherit】。(2)在出现对话框中选择要继承菜单名,点击OK按钮。(3)所选菜单显示在菜单画板中,画板标题表明该菜单是一个后代菜单。随即对其进行必要修改。(4)保存所继承菜单。2继承信息使用后代菜单继承了父菜单事件、格调、函数和脚本等全部内容。(1)在后代菜单中可以做事在菜单中添加菜单项;修改菜单项属性,如修改菜单项显示文本及可 用性等;扩展或取代继承来菜单对象脚本;可认为没有脚本菜单编写脚本;可认为菜单声明变量、函数和结构。(2)在后代菜单中不能做事不能改变继承来菜单项之间前后次序,可以在它们之间插入新菜单项,但必须保持原来菜单项次序;继承
9、来菜单不能被删除;不能修改继承来菜单项名称;不能改变继承来菜单项类型。结束放映第一页上一页下一页最终一页第8页9.2.8 经过继承创建一个菜单3在后代菜单中插入菜单项新继承来菜单只能在菜单项最终添加菜单项,不能在菜单项中插入新菜单项,若非要插入新菜单项,那么从插入菜单项位置至以后各菜单项属性都要选择ShiftToRight复选框,然后再采取前面介绍方法进行菜单项插入。9.3 设置菜单属性 经过对菜单项属性设置,指定菜单对象外观和行为,每个菜单项属性视窗都包含General和Toolbar两个标签页。9.3.1 给菜单命名 给菜单命名有两个方面目标,一是将名称显示在屏幕上给用户看,作为默认菜单显
10、示文本;二是提供给编程者使用,方便在脚本中区分菜单项,称为菜单名称。(1)菜单名称菜单名称普通由两部分组成,第一部分是系统指定前缀m_,第二部分是一个正当标识符。菜单项名称是唯一,而且不能为空白,不然菜单不能保留。结束放映第一页上一页下一页最终一页第9页9.3.1 给菜单命名(2)菜单文本Text文本框中设置菜单项显示文本。任何时刻都可修改菜单项文本。9.3.2 设置菜单提醒信息经过设置菜单项Microhelp属性,给菜单项添加提醒。该属性只有在菜单嵌入MDIHelp类型窗口中才起作用。当点击菜单项时,在窗口底部状态栏中显示对应菜单项Microhelp属性中内容。9.3.3 设置菜单可访问性
11、菜单访问性主要由Visible、Enabled和Checked这三个属性决定。(1)Visible复选框:决定菜单项是否可见。可经过属性设置或脚本控制来完成。经过属性设置:若Visible复选框未被选中,则该菜单项不可见,在该菜单项之后菜单项位置依次提前。经过脚本控制:赋值语句:菜单名.菜单项名.visible=true使菜单项可见;赋值语句:菜单名.菜单项名.visible=false使菜单项不可见。如:m_menu.m_菜单.m_创建菜单.visible=false,表示m_memu.m_菜单.m_创建菜单项不可见。结束放映第一页上一页下一页最终一页第10页9.3.3 设置菜单可访问性(2
12、)Enabled复选框:决定某个菜单项是否可用,即点击这个菜单项是否执行它脚本。若菜单项被设置为不可用,则它文本呈灰色。也能够经过属性设置或脚本控制来完成。经过属性设置:若Enabled复选框未被选中,则该菜单项就不可用,呈灰色显示。经过脚本控制:赋值语句:菜单名.菜单项名.Enabled=true使菜单项可用;赋值语句:菜单名.菜单项名.Enabled=false使菜单项不可用。如:m_menu.m_菜单.m_创建菜单.Enabled=false,表示m_memu.m_菜单.m_创建菜单项不可用,呈灰色显示。(3)Checked复选框:实际应用中,使用带有标志菜单项来表示选中和未选中两种状态
13、。如PowerBuilder系统中,Window菜单Output菜单项前面有符号,表示已经显示Output视窗,点击Output菜单项,其前面符号会消失,再点击又会出现,Output视窗也会跟着显示和消失。这种形式菜单项在选中和未选中两种状态之间切换,经过Checked属性来完成。结束放映第一页上一页下一页最终一页第11页9.3.4 设置菜单加速键和快捷键(1)加速键表现形式:加速键就是菜单文本(即Text属性)中前面带有&符号字母。(2)定义快捷键:定义快捷键是经过选择General标签页中ShortCutKey列表框中内容和三个复选框相结合来完成。注意:菜单条上菜单项不要设置快捷键;必须从
14、ShortCutKey列表框中选择一个键,不能自己输入;菜单项快捷键应是唯一,不然会引发混乱。9.3.5 在菜单中加入分隔符 经过分隔符能够把菜单中相关菜单项组织在一起,加入方法是:在需要分隔菜单项之间插入一个新菜单项,然后在新菜单项文本框中输入一个减号(-),则在屏幕上两个菜单项之间就会出现一个分隔符。注意:分隔符不用于菜单条菜单项之间,只能用于下拉、弹出、级联菜单中;作为分隔符菜单项文本中只需输入一个减号(-),输入多了,将不会出现分隔符。结束放映第一页上一页下一页最终一页第12页9.3.6 将菜单项设置成工具栏 在MDI或MDIHelp类型窗口中,为了方便,通常为一些惯用菜单项在工具栏上
15、设置对应按钮,经过单击按钮就可执行对应菜单项功效。设置工具栏要使用Toolbar标签页。(1)按钮文本ToolbarItemText文本框:显示在按钮图标下面字符串,用作工具栏提醒信息,让鼠标光标在一个工具栏按钮上停留时间超出2秒,就会显示提醒信息。(2)按钮图标ToolbarItemName下拉列表框:用于设置按钮普通情况下图标。能够选择系统提供图标,也可经过右边Browse按钮选择需要图标。ToolbarItemDownName下拉列表框:用于设置按钮被按下时图标。(3)按钮可见性ToolbarItemVisible和在ToolbarItemDown两个复选框:只有选择ToolbarIte
16、mVisible复选框,才能显示按钮;若同时选择两个复选框,则按钮初始状态是ToolbarItemDownName中图标,不然按钮初始状态是ToolbarItemName中图标。结束放映第一页上一页下一页最终一页第13页9.3.6 将菜单项设置成工具栏(4)按钮分组 使用ToolbarItemSpace:能够将按钮按逻辑关系分成若干组,各个逻辑组之间用分隔符隔开。0表示当前按钮紧跟在前一个按钮后面,与前面按钮是一组;大于0数据表示当前按钮与前面按钮分在两个组,分隔距离与数据相关,1表示当前按钮与前面按钮之间间隔是10个像素,2表示20个像素。ToolBarItemOrder:表示按钮在工具栏上
17、显示次序,系统将按照该值相对大小排列。假如把全部按钮这个属性都设为0,那么按钮排列次序将与菜单项次序相同。ToolbarItemBarIndex:是工具栏编号,指定按钮在第几行工具栏上。该值为0表示不可见,大于0表示所在行号。如2代表放在第二行工具栏上。结束放映第一页上一页下一页最终一页第14页9.4 菜单使用 用菜单有两种方法:一是与某个窗口相关联,作为窗口菜单条;二是与某个对象相关联,作为弹出菜单。9.4.1 将菜单嵌入到窗口中(1)属性设置打开要嵌入菜单窗口,打开properties视窗,在General标签页MenuName文本框中输入或选择菜单名,保留窗口即可。(2)编写脚本在窗口o
18、pen事件中,写入语句this.changemenu(菜单名)。运行程序时,显示窗口同时,也显示菜单。9.4.2 编写脚本 菜单对象有三个事件,Clicked、Selected和Help。在应用程序运行过程中,只有菜单项Visible和Enabled这两个属性都是True时,才会对鼠标单击和键盘操作作出反应。结束放映第一页上一页下一页最终一页第15页9.4.2 编写脚本(1)Clicked事件在发生以下情况时触发:用鼠标单击菜单项。用键盘将光标移到一个菜单项,然后按Enter键。使用菜单项快捷键。当菜单项已经显示出来情况下,使用加速键。(2)Selected事件触发:将鼠标移至菜单项,使菜单项加亮显示时触发。(3)Help事件触发:在用户按下F1键时触发。引用菜单栏上菜单项,使用“窗口名.菜单项”;引用下拉菜单中菜单项,使用“窗口名.菜单栏上菜单项.下拉菜单项。Popmenu是PowerBuilder提供一个方法,它把菜单作为弹出菜单显示在坐标X,Y处。其调用格式为:菜单对象名.弹出菜单.popmenu(横坐标,纵坐标)结束放映第一页上一页下一页最终一页第16页
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100