菜单是用户操作应用程序的主要界面,它由一系列命令组成选项(菜单项构
成);
用户通过选择菜单项发出命令,指示应用程序完成用户期待的任务; 菜单是一种独立的对象;
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.设置菜单的工具栏
设计创建工具栏,这样用户直接点击图标按钮就可以方便的完成相应的功
能;
使用“Toolbar”标签;
最简单的设置菜单的工具栏,只需填写“ToolbarItemName”属性即可;
四、 菜单事件及编程
菜单是要与菜单事件和函数结合,才能发挥作用;
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 window.userobject.attribute
例: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框架窗口何工作表有效,对其他类型窗口来说,菜单定义的工具栏无效;
工具栏上的图标按钮直接对应于菜单中的某个菜单项; 用户能够控制工具栏的显示特性;
因篇幅问题不能全部显示,请点此查看更多更全内容