当前位置:文档之家› 第07章 菜单与多文档界面设计

第07章 菜单与多文档界面设计


7.4 多文档界面设计
7.4.1 7.4.2 7.4.3 7.4.4 SDI与MDI MDI框架窗口与文档窗口 菜单与工具栏 MDI窗口的函数
7.4.1 SDI与MDI
1. 单文档界面 单文档界面(Single Document Interface,SDI) 的应用程序由一个窗口构成,运行时只能处理一个文件, 需要处理多个文件时,必须同时打开多个应用程序,这 样任务栏上就有多个任务在运行。例如Windows的记事 Windows 本、画图等程序都是SDI风格。SDI的优点是程序简单 而短小,可为Windows本身所携带。
2. 控制文档窗口的函数
控制文档窗口的函数如下表所示:
《 PowerBuilder实用教程》 PowerBuilder实用教程 实用教程》
叶核亚 王青云
第07章 菜单与多文档界面设计
7.1 7.2 7.3 7.4 菜单概述 菜单画板 菜单设计 多文档界面设计
7.1 菜单概述
1. 菜单对象 2. 菜单对象的两种使用方式 (1) 主菜单 (2) 弹出式菜单 3. 菜单设计原则
1. 菜单对象
菜单(menu)是一种独立的 PowerBuilder对象,可以显示在系统树窗口 中。一个菜单对象对应一组命令或一种选择。 程序运行时,在当前活动窗口中,用户选择 一个菜单,可以执行一组命令或实现一种选 择。菜单丰富了应用程序界面的表达能力。
2. 菜单对象的两种使用方式
(1) 主菜单 主菜单是相对于窗口而言的,它出现在窗口的标题 栏下,与窗口同时出现。窗口的MenuName属性指定该 窗口上显示的菜单对象。调用窗口的ChangeMenu()函数 ChangeMenu() 在执行期间可以改变与窗口关联的菜单对象。 主菜单的结构一般较复杂。每个菜单对象由若干个 菜单项(menu item)组成,每个菜单项还可以有子菜 单项(submenu item),这样形成菜单的多层次结构。
7.4.2 MDI框架窗口与文档窗口
3. 文档窗口 文档窗口在PowerBuilder中称为sheet,窗 口 类 型 是 main! , 不 能 是 response! 、 mdi! 和 mdihelp!类型。
7.4.3 菜单与工具栏
1. 2. 3. 4. 控制文档窗口的排列方式 微帮助文本 工具栏 ParentWindow代词
7.4.2 MDI框架窗口与文档窗口
1. MDI框架窗口的组成
MDI框架窗口 菜单栏 工具栏 文档窗口 文档窗口的 级联排列方式
客户工作区 状态栏
7.4.2 MDI框架窗口与文档窗口
2. 创建MDI框架窗口 创建MDI框架窗口的步骤如下: 创建一个新窗口,设置Window Type属性为mdi!或 mdihelp!。 设置MenuName属性为与之相关联的菜单对象。
2. 在窗口中引用菜单对象
在窗口脚本中引用菜单对象的语法格式为: 菜单对象.菜单项.属性 菜单对象.菜单项.子菜单项.属性 例如,菜单项及工具栏上的按钮状态应该随窗口的 激活状态而变化,当窗口获得焦点时可操作,当窗口失 去焦点时不可操作。因此,需要在窗口的activate事件 上写以下使菜单项可操作的脚本: m_input.m_save.Enabled = false
3. 命名菜单项
菜单项的Name属性指定该菜单项的名称, Text属性指定菜单项的显示文本。当在添加菜 单项时键入的文本自动成为菜单项的Text属性, 并且Name属性中显示的默认菜单名是菜单项 的命名前缀“m_”加Text属性值。
4. 保存菜单对象 单击工具条上的【Save】按钮,保存 当前菜单对象。第1次保存时,需要在 Save Menu对话框上为菜单对象命名,菜 单对象的命名前缀是m_。
2. 菜单对象的两种使用方式
(2) 弹出式菜单 弹出式菜单(pop-up menu)是相对于控件而言的, 当鼠标指向某控件时,单击鼠标右键,弹出一个菜单, 称为弹出式菜单。弹出式菜单的结构相对简单,一般最 多只有二层菜单项。 可以为窗口及控件设计弹出式菜单。但窗口及控件 上没有属性与弹出式菜单关联,需要在RButtonDown事 件(单击右键)中写脚本以激活弹出式菜单。
4. ParentWindow代词
保留字ParentWindow是一个代词,在菜单项脚本中 使用,指代与该菜单对象相关联的MDI框架窗口。例如, 在“退出”菜单项的Clicked事件上写以下脚本,关闭与 MDI 与该菜单对象相关联的MDI框架窗口: close(ParentWindow) 可以通过ParentWindow引用与菜单相关联的MDI窗 口的属性,但不能引用MDI窗口中控件的属性。
2. 将与窗口无关的菜单作为弹出式菜单
实际应用中,窗口上的主菜单与控件上的弹出式菜 单一般不会共用一个菜单对象。通常的做法是,窗口上 的主菜单功能较强,结构复杂,包含较多的菜单项,而 控件上的弹出式菜单结构简单,只需含有与该控件相关 的菜单项即可。不同的控件所需进行的操作不同,因而 关联的弹出式菜单也不同。
1. 2. 3. 4. 5. 创建菜单对象 添加菜单项 命名菜单项 保存菜单对象 分隔菜单
1. 创建菜单对象
单击工具栏上的【New】按钮,在New 对话框的PB Object页上,选择Menu菜单对 象,则系统创建了一个菜单对象并打开菜单 画板。
2. 添加菜单项
在新建菜单对象的菜单树中只有一个 菜单项Untitled0,这是一棵菜单树的根,必 须为该菜单添加菜单项。操作方法是,在菜 单项上单击鼠标右键,执行弹出式菜单 Insert SubMenu Item,在编辑框中键入菜 单显示文本,之后,在所见即所得视图中即 可见到新加入的菜单项。
5. 分隔菜单
如果设置菜单项的Text属性为“-”(减 号),则该菜单项显示为一条分隔线。
7.3 菜单设计
7.3.1 菜单项的属性和事件 7.3.2 引用对象 7.3.3 使用弹出式菜单
7.3.1 菜单项的属性和事件
菜单项的属性如下表所示:
7.3.1 菜单项的属性和事件
菜单项的事件如下表所示:
7.2 菜单画板
菜单画板(Menu Painter)提供了插 入菜单项、设置属性、编写脚本、预览菜 单等多种功能。 7.2.1 菜单画板的组成 7.2.2 菜单画板的基本操作
7.2.1 菜单画板的组成
菜单项名 锁定菜单 项名 菜单预览 WYSIWYG视图 菜单树视图 属性视图 显示文本
脚本视图
7.2.2 菜单画板的基本操作
பைடு நூலகம்
7.4.1 SDI与MDI
2. 多文档界面 多文档界面(Multiple Document Interface, MDI)的应用程序由一个框架窗口和多个文档窗口组成。 可同时打开多个文档窗口编辑多个文件,而不必启动多 个任务。同时打开的多个文档窗口可以按层叠、级联等 方式排列,其中只有一个窗口是活动的,显示在屏幕最 前,其余窗口呈非活动状态,各窗口的活动状态可以切 换。
3. 菜单设计原则
菜单是与窗口分离的独立对象,通常将对窗口的 操作、对窗口中数据窗口控件的操作设计成通用的菜 单,使得窗口界面清楚、整洁。而且即使数据窗口控 件所连接的数据窗口对象改变了,菜单项仍然可以起 作用,提高了软件的可重用性。因此,我们通常采用 菜单方式实现对窗口中数据的操作。 菜单设计应该结构合理,层次清晰,分工明确。 每个菜单项实现特定功能,相互关联的菜单项组合在 一个下拉菜单中,菜单的层次不宜太多,一般只级联 一级。
7.3.3 使用弹出式菜单
1. 将窗口上的主菜单作为弹出式菜单使用 2. 将与窗口无关的菜单作为弹出式菜单使用
1. 将窗口上的主菜单作为弹出式菜单使用
可以将已与窗口关联的菜单对象或其中的某个下拉菜单 作为弹出式菜单显示。例如,在数据窗口控件dw_1的 RButtonDown事件的脚本中,可以直接调用m_input的函数 PopMenu()弹出菜单,语句如下: m_input.PopMenu(PointerX(), PointerY()) 类似地,也可将m_input中的某个下拉菜单作为弹出式 菜单显示,语句如下: m_input.m_save.PopMenu(PointerX(), PointerY())
7.4.4 MDI窗口的函数 1. 打开文档窗口的函数 2. 控制文档窗口的函数
1. 打开文档窗口的函数
在MDI窗口或菜单对象脚本中,调用系统函数OpenSheet()打 开指定的文档窗口。OpenSheet()函数的语法格式为: OpenSheet(文档窗口, MDI框架窗口 [,位置[,排列方式]]) OpenSheetWithParm(文档窗口,参数,MDI框架窗口[,位置[,排 列方式]]) 其中,〈文档窗口〉指定要在〈MDI框架窗口〉中打开的窗口。 〈位置〉和〈排列方式〉两个参数为可选项,〈位置〉指定所打开 的文档窗口名显示在第几个下拉菜单下面。
3. 工具栏
工具栏上的图标按钮为选择菜单项提供了一种快捷 方式,用户只要单击工具栏上的按钮就能完成相应菜单 项的功能。MDI框架窗口和文档窗口都可以带有工具栏, 当两者都有工具栏时,打开文档窗口后,文档窗口的菜 单会成为当前菜单显示在工具栏上,而MDI框架窗口的 菜单会被暂时隐藏。但两者的工具栏会同时显示在窗口 上,以方便用户的操作。
7.3.2 引用对象
1. 在菜单中引用窗口和控件 2. 在窗口中引用菜单对象
1. 在菜单中引用窗口和控件
在菜单中引用窗口的属性时,使用窗口的名字 限定属性。语法格式为: 窗口.属性 例如, w_input.WindowState = maximized! 在菜单中需要引用窗口中的控件时,使用窗口 的名字限定该控件。语法格式为: 窗口.控件.属性 例如, w_input.dw_1.Enabled = true
1. 控制文档窗口的排列方式
主菜单中通常有一个“窗口”菜单项, 用于控制多个文档窗口之间的排列方式。例如, PowerBuilder 集 成 环 境 的 Window 菜 单 下 就 有 Layer(层叠)、Cascade(级联)等菜单项用 于改变画板的排列方式。
相关主题