PB(6)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PB(6)
第六章菜单
●菜单是用户操作应用程序的主要界面,它由一系列命令组成选项(菜单项构
成);
●用户通过选择菜单项发出命令,指示应用程序完成用户期待的任务;
●菜单是一种独立的对象;
●PB中,用Menu画板来建立,修改菜单,然后粘贴到相应的窗口上;
●制作菜单的操作很简单,可以很容易掌握;
●主要内容:
菜单概述
创建与修改菜单
设置菜单属性
菜单事件及编程
使用继承建立菜单
使用菜单
多文档界面(MDI)
一、菜单概述
1.关于菜单和菜单对象
●菜单中的每个选项定义为一个菜单对象;
●菜单对象显示在菜单条,下拉式菜单或者级联菜单中;
●下拉式菜单是菜单条的菜单对象下面的菜单;
●级联式菜单是下拉式菜单的菜单对象旁边的菜单;
2.使用菜单
●有两种方式使用在PB中建立的菜单;
●在窗口中的菜单条中使用,窗口菜单与窗口相关联,只要在窗口打开,窗口
菜单就显示出来;
●作为弹出式菜单(快捷菜单)使用,只有当脚本执行PopMenu 函数时,弹出
式菜单才显示出来;
3.设计菜单
●利用PB可以完全自由地进行设计菜单;
●但是为了让应用程序使用起来更简单,应遵循操作环境的一些规定;
●例如:根据约定,菜单对象后面的省略号(…)表示单击该菜单对象会显示
一个对话框;
●把相关的菜单对象组合在一个下拉式菜单中;
●较少使用级联菜单并且只级联一级;
4.建立菜单
●通过设置菜单对象的属性来指定其外观和行为;
●编写脚本以决定如何对菜单中的事件进行响应,可以为菜单声明函数,结构
和变量来支持脚本;
●建立菜单的方式有两种:
从头开始建立一个新菜单;
继承已有的菜单的风格,函数,结构,变量和脚本建立菜单;
二、建立新菜单
1.打开Menu 画板
2.Menu 画板的组成
●WYSIWYG视窗:设计时看到的菜单和运行时的菜单是一样的;
●Tree Menu 视窗:树状菜单;
●代码视窗:
●属性视窗:
●菜单工具条:
3.在Menu 画板中,可以指定下面各项:
●在菜单条中显示的若干菜单对象;
●在菜单条每个菜单对象下面显示的若干菜单对象;
●菜单对象的属性;
●加速键和快捷键;
●菜单对象的脚本;
4.建立菜单
●在菜单项编辑区,选定要创建下拉菜单的项,单击鼠标右键,弹出快捷菜单;
●Insert Menu Item:插入同级菜单
●Insert Menu Item At End:在本级末尾插入菜单项
●Insert Submenu Item:插入下一级菜单
5.修改菜单
●插入同级新菜单项;
●删除当前菜单项;
●插入分隔线:“-”,分隔线把相同的菜单项分开,使菜单更加易于用户使用;
●移动菜单项;
●复制菜单项;
●为菜单改名字;
●为菜单项设置加速键:在菜单项名称(一个指定的字母)的前面加上“&”
符号;
三、控件属性的设置
1.定义菜单项的快捷键
●快捷键只能在菜单画笔中定义,而不能在程序中利用代码进行改变;
●使用“Shortcut”标签;
●在同一个菜单中,作为快捷键使用的组合键应当唯一;
2.设置菜单对象的一般属性
●Name:菜单项名称;
●Lock Name:指定菜单项名称能否被修改;
●Text:菜单项在菜单中显示的内容;
●Microhelp:帮助信息,鼠标移到该项上时,所显示的提示信息;
●Tag:菜单的说明信息;
●Visible:菜单是否可见;
●Enabled:菜单是否有效的;
●Checked:菜单是否显示选中符号;
3.设置菜单的工具栏
●设计创建工具栏,这样用户直接点击图标按钮就可以方便的完成相应的功
能;
●使用“T oolbar”标签;
●最简单的设置菜单的工具栏,只需填写“T oolbarItemName”属性即可;
四、菜单事件及编程
●菜单是要与菜单事件和函数结合,才能发挥作用;
1.菜单事件
●Clicked事件由以下几种操作触发
鼠标单级菜单项;
使用加速键调出菜单;
使用快捷键调处菜单;
●Help事件由以下几种操作触发
在菜单操作中按下键盘的[F1]键;
点击标题栏上的“问号”;
●Selected事件;
菜单的某项被选中但没有做任何操作,菜单项被高亮显示时触发该事件;
该事件最常用的是在脚本中利用ParentWindow.SetMicroHelp()方法显示该菜单项的MicroHelp文本;
2.菜单的函数
●Disable:菜单失效,不能被用户选,同时Enabled属性设置为False;
●Enable:菜单有效,同时Enabled属性设置为True;
●Checked:菜单的Checked属性设置为True,在菜单项的旁边显示选中的符
号;
●UnChecked:菜单的Checked属性设置为False,在去掉选中符号;
●Hide:隐藏菜单项;
●Show:使隐藏的菜单项显示出来;
●PopMenu:显示快捷菜单;
●为了更好的使用菜单,可以定义自己的菜单级函数;
3.引用应用程序中的对象
●引用窗口
只需简单地使用窗口的名字,w_cust.WindowState=Minimized!;
可以使用保留字ParentWindow来引用运行过程中与菜单相关联的窗口,Close(ParentWindow)
●引用窗口中的控件和用户对象;
window.control.attribute
/doc/d819090842.html,erobject.attrib ute
例:w_cust.cb_print.Enabled=TRUE
●引用菜单对象;
menu.menuobject
menu.menuobject.attribute
当引用下拉式菜单或级联式菜单中的菜单对象时,必须指定每个菜单对象到
正在引用的菜单对象的路径;
例如:m_menu.m_text.m_bold.check()
五、使用继承建立菜单
●当使用继承建立菜单时,祖先菜单中的所有东西都被他的后代继承;
●可以在后代菜单中作以下事情:
在菜单最后添加菜单对象;
在菜单中插入菜单对象;
修改已有的菜单对象;
为在祖先菜单中没有脚本的菜单对象建立脚本;
扩展或取代继承来的脚本;
为菜单声明变量,函数和结构
●在后代菜单中不可以作以下事情:
改变继承来的菜单对象的顺序;
删除继承来的菜单对象;
六、使用菜单
●给窗口添加菜单条
在窗口画板中,把菜单条和窗口关联起来;
在窗口的属性窗口中,在Menu Name文本框中输入要关联的菜单;
在窗口的脚本中标识菜单对象:menu.菜单对象
在运行过程中改变窗口的菜单:在脚本中使用ChangeMenu函数
●弹出窗口上的菜单
当用户单击某对象或某控件时,把窗口上某菜单标题下的下拉菜单作为
弹出式菜单显示;
只需在某对象或某控件的RbuttonDown事件中写下代码
例:m_main.m_title.PopMenu(PointerX(),PointerY())
七、多文档界面(MDI)
●MDI是一种特殊风格的窗口,在一个MDI窗口中可以打开多个工作窗口
●用户可以在一个环境下打开多个窗口,可以完成多个任务;
1.MDI窗口的构成
●菜单
●工具栏
●MDI框架
●客户区域
●工作窗口
●状态栏
2.创建一个完整的MDI界面的步骤
●建立MDI框架窗口
创建一个新窗口;
“Window Tyep”:MDI Frame with MicroHelp;
将各个工作表公用的菜单连接到该窗口上;
一般情况下,框架窗口上不放置任何控件,而是把所需控件放置到工作
表上;
●创建工作表
创建普通窗口;
指定窗口类型:确保不是“MDI”,“Response”类型;
打开工作表的方法:使用OpenSheet()函数
例:OpenSheet(w_person,ParentWindow)
OpenSheet (w_person,w_parent,5,Original!)
●建立MDI应用程序中的菜单;
●设置微帮助
微帮助是显示在MDI框架窗口底部状态栏上的上下文相关的文字;
微帮助与菜单联系后,当用户选择菜单项时,系统会显示当前菜单的帮助信息;
为菜单项定义为帮助的方法是:在菜单项的“MicroHelp”属性中输入该菜单项的帮助信息;
如果要为菜单之外的对象定义为帮助:
选择某个控件,在它的Tag属性中输入该控件的帮助信息;
在该控件的GetFocus事件中键入代码:
w_frame.SetMicroHelp (This.tag)
●设置工具栏
MDI风格的应用程序,可以使用工具栏;
菜单中定义的工具栏只对MDI框架窗口何工作表有效,对其他类型窗口来说,菜单定义的工具栏无效;
工具栏上的图标按钮直接对应于菜单中的某个菜单项;
用户能够控制工具栏的显示特性;。