1、第9章 菜单与工具栏,9.1 Visual FoxPro系统菜单 9.2 建立菜单 9.3 为顶层表单添加菜单 9.4 创建快捷菜单 9.5 创建工具栏 9.6 协调菜单与自定义工具栏,9.1.1 基本概念 菜单系统是菜单栏、菜单标题、菜单和菜单项的组合。 菜单栏:位于窗口标题下的水平条形区域,用于放置各菜单标题。 菜单标题:也叫菜单名,用于标识菜单。 菜单:单击菜单标题可以打开相应的菜单。菜单由一系列的菜单项组成,包括命令、过程和子菜单等。 菜单项:列于菜单上的菜单命令,用于实现某项具体的功能。,9.1 Visual FoxPro系统菜单,下一页,返回,9.1.2 Visual FoxPro
2、系统菜单的组成和结构 开始设计一个菜单系统时,必须对菜单结构有比较深入的理解。下面以Visual FoxPro为例,介绍Windows系统的菜单组织及名称。 在菜单标题后面有一个带下画线的字母,称为访问键或热键(Hot Key)。按住Alt键的同时,按下该字母,可以执行该菜单标题的功能。,9.1 Visual FoxPro系统菜单,下一页,返回,上一页,Visual FoxPro支持两种类型的菜单:条形菜单和弹出式菜单。每个条形菜单都有一个内部名字和一组菜单选项,每个菜单选项都有一个名称(标题)和内部名字。每个弹出式菜单也有一个内部名字和一组菜单选项,每个菜单选项则有一个名称(标题)和选项序号
3、。菜单项的名称用于显示在屏幕上,供用户识别;菜单及菜单项的内部名字或选项序号则用于在代码中引用。,9.1 Visual FoxPro系统菜单,返回,上一页,9.2.1 设计菜单的原则 菜单的设计通常遵循以下几项基本原则: 根据用户要执行的任务组织菜单系统,即根据应用程序的程序层次来规划菜单系统。这样,在浏览菜单系统时就可以了解应用程序的组织和功能情况。 给每个菜单和菜单系统设定一个有意义的标题和简短提示,便于用户准确领会菜单和菜单选项所对应的操作和功能。 按照估计的菜单项的使用频率、逻辑顺序或者字母顺序来组织菜单中的菜单项。如果对菜单后期的使用频率不能确定,,9.2 建立菜单,下一页,返回,可
4、以考虑按字母的先后或者工作顺序组织,这种方法在菜单选项较多时更实用。 按功能相近原则和顺序原则,将菜单项进行逻辑分组,并用分隔线分隔。 将菜单中菜单项的数目限制在一个屏幕之内。如果菜单项的数目超过了一屏,则应为其中的一些菜单项创建子菜单。 为菜单和菜单项设置访问键和快捷键,以便可以快速操作。 使用能够准确描述菜单项的文字。,9.2 建立菜单,下一页,返回,上一页, 当使用英文来说明菜单和菜单选项的标题或提示时,最好采用大小写混合的方式。中文提示和中文标题也建议有英文的字母访问键。 9.2.2 建立菜单的基本步骤 菜单系统规划好后,就可利用Visual FoxPro系统提供的菜单设计器来建立菜单
5、。“菜单设计器”是Visual FoxPro为设计菜单系统提供的一个强有力的工具,应用程序的开发人员可以利用“菜单设计器”方便、快捷地为应用系统创建一个规划合理的菜单系统。 设计菜单的基本步骤如图9.2所示。,9.2 建立菜单,下一页,返回,上一页,菜单文件的扩展名为.mnx,菜单文件要经过编译才能运行。菜单文件经过编译后生成一个新的文件,扩展名为.mpr。 9.2.3 菜单设计器的窗口组成 【菜单设计器】窗口包括菜单名称、结果、选项、菜单级、菜单项和【预览】按钮等。 (1)菜单名称 在此栏中输入显示在菜单系统中的菜单的标题或菜单项的名称。如果用户想为菜单项加入访问键,即利用键盘访问菜单的方法
6、,可以在欲设定为访问键的字母前面加上反斜杠和小于号()。,9.2 建立菜单,下一页,返回,上一页,(2)结果 指定在选择菜单标题或菜单项时发生的动作。例如,可执行一条命令,打开一个子菜单或运行一个过程。 单击该栏将出现一个下拉框,有命令、填充名称(或菜单项)、子菜单和过程4种选择。 命令:选择此选项,列表框右边会出现一个文本框,可以在文本框内输入一条具体的命令。菜单项的动作就是执行这条命令。,9.2 建立菜单,下一页,返回,上一页, 填充名称(或菜单项):选择此选项,列表框右边会出现一个文本框,可以在文本框内输入菜单项的内部名字或序号。如果窗口右上方的“菜单级”为菜单栏,该选项为“填充名称”,
7、表示让用户定义菜单内部名字;若当前“菜单级”为某一弹出式子菜单,该选项为“菜单项#”,表示让用户定义菜单项序号。 子菜单:选择此选项,列表框右边会出现【创建】或【编辑】命令按钮(第一次定义时为【创建】按钮,以后为【编辑】按钮)。单击相应按钮,【菜单设计器】窗口就切换到子菜单窗口,供用户建立或修改子菜单。此时,窗口右上方【菜单级】列表框将显示当前编辑的菜单名。可以通过该列表框选项,返回到上级菜单或主菜单。,9.2 建立菜单,下一页,返回,上一页, 过程:选择此选项,列表框右边会出现【创建】命令按钮,单击【创建】按钮将打开一个文本编辑窗口,可在其中输入和编辑过程代码。以后再进行过程编辑时,不需要写
8、入PROCEDURE语句。 (3)选项 单击该按钮将打开一个【提示选项】对话框,如图9.10所示,可在其中为各菜单项设置各种属性。一旦定义过该属性,按钮上就会显示符号“”。,9.2 建立菜单,下一页,返回,上一页,(4)菜单级 菜单系统是分级的,最高一级是菜单栏里的菜单,其次是每个菜单下的子菜单。从该下拉列表框中选择适当菜单级,可以进行相应菜单的设计。 (5)菜单项 提供设计菜单时的操作功能。在菜单项选项组中有3个命令按钮,即插入、删除、插入栏。 【插入】命令按钮在【菜单设计器】窗口中插入新的一行。 【插入栏】命令按钮显示【插入系统菜单栏】对话框,使用户可以插入标准的Visual FoxPro
9、菜单项。,9.2 建立菜单,下一页,返回,上一页,【删除】命令按钮从【菜单设计器】窗口中删除当前菜单行。 (6)【预览】按钮 浏览所设计菜单的屏幕效果,根据结果可再进行修改。 9.2.4 快速菜单 利用Visual FoxPro提供的“快速菜单”功能,可先建立一个基于Visual FoxPro原有菜单系统的菜单,然后根据应用程序的实际需要进行修改,将快速而有效地生成用户自己的菜单系统。,9.2 建立菜单,下一页,返回,上一页,9.2.5 建立应用程序菜单 了解了快速菜单的创建后,便可着手设计一个菜单。其实在“菜单设计器”的初始界面中,就可以进行菜单设计了。这里举一个简单的例子来说明如何设计菜单
10、,首先一定要规划好。,9.2 建立菜单,返回,上一页,在应用系统的设计中,经常需要为顶层表单添加菜单,其操作步骤如下: 在菜单设计器中按照前面讲述的方法设计好菜单,如图9.17所示。 设置主菜单为顶层菜单。打开应用程序的主菜单定义文件,出现【菜单设计器】窗口,单击【显示】菜单中的【常规选项】命令,出现【常规选项】对话框,选中【顶层表单】复选框,单击【确定】按钮。 在【菜单】菜单中单击【生成】命令,并指定生成的文件名(例如保存为samplemenu.mpr)和位置。,9.3 为顶层表单添加菜单,下一页,返回, 用表单设计器设计一个表单(具体方法见第8章,这里不再赘述)。设置表单为顶层表单,将表单
11、的ShowWindows属性值定义为2。 编写表单事件代码。 在表单的Init事件代码中添加调用菜单程序的命令。 命令格式:Do WITH THIS ,“(在本例中命令为:DO samplemenu.mpr WITH THIS, .T.) 在表单的Destroy事件代码中添加清除菜单命令,使得在关闭表单时能同时清除菜单,释放其所占用的内存空间。,9.3 为顶层表单添加菜单,下一页,返回,上一页,命令格式:RELEASE MENUEXTENDED(在例中命令为:RELEASE MENU samplemenu EXTENDED) 运行表单。,9.3 为顶层表单添加菜单,返回,上一页,一般来说,下拉
12、式菜单作为一个应用程序的菜单系统,列出了整个应用程序所具有的功能。快捷菜单一般从属于某个界面对象,当用鼠标右键单击该对象时,就会在单击处弹出快捷菜单。快捷菜单通常列出与处理相应对象有关的一些功能命令。 利用系统提供的快捷菜单设计器可以方便地定义与设计快捷菜单。与下拉式菜单相比,快捷菜单没有条形菜单,只有弹出式菜单。快捷菜单一般是一个弹出式菜单,或者由几个具有上下级关系的弹出式菜单组成。,9.4 创建快捷菜单,返回,9.5.1 定制Visual FoxPro 6.0工具栏 用户可以修改Visual FoxPro 6.0提供的工具栏,也可以创建由其他工具栏上的按钮组成的自己的工具栏。 1. 修改已
13、有的工具栏 从【显示】菜单中单击【工具栏】命令,打开【工具栏】对话框,如图9.24所示。 选中要定制的工具栏,然后单击【定制】按钮,此时系统显示要定制的工具栏和【定制工具栏】对话框,如图9.25所示。,9.5 创建工具栏,下一页,返回,2. 创建新的工具栏 从【显示】菜单中单击【工具栏】命令,打开【工具栏】对话框。 单击【新建】按钮,打开【新工具栏】对话框。 在【新工具栏】对话框中,为工具栏命名然后单击【确定】按钮,弹出【定制工具栏】对话框。 选择【定制工具栏】对话框中的一个分类,然后拖动需要的按钮到工具栏上,将按钮添加到工具栏中。 通过拖动工具栏上的按钮来重排按钮。,9.5 创建工具栏,下一
14、页,返回,上一页, 单击【定制工具栏】对话框中的【关闭】按钮,关闭工具栏窗口,完成工具栏的创建。 9.5.2 自定义工具栏 要创建自定义工具栏,首先必须为它定义一个类。Visual FoxPro 6.0提供了一个工具栏基类,可以在此基础上创建所需的类。 1. 定义工具栏类 在Visual FoxPro主窗口中单击【文件】菜单中的【新建】命令,选中【类】单选按钮,单击【新建文件】命令,弹出【新建类】对话框,如图9.28所示。,9.5 创建工具栏,下一页,返回,上一页, 在【类名】文本框中输入新类的名称。本例中的类名定义为“我的类”。 从【派生于】下拉列表框中选择Toolbar工具栏基类。 在【存
15、储于】文本框中输入类库名,保存创建的新类。本例中类库名为“我的类.vcx”。 单击【确定】按钮,弹出【类设计器】窗口。 在该工具栏中添加所需控件。 保存所设计的类,新建类的扩展名为.vcx。,9.5 创建工具栏,下一页,返回,上一页,2. 将自定义工具栏类连接到表单 在定义了一个工具栏类之后,便可以用这个类创建一个工具栏,可以用表单设计器或者用编写代码的方法将工具栏与表单对应起来。用户可以在表单集中添加工具栏,让工具栏与表单集中的各个表单一起打开,但不能直接在某个表单中添加工具栏。 使用表单设计器在表单集中添加工具栏的操作步骤如下: 注册并选定包含工具栏类的类库。 打开要使用的工具栏类的表单集
16、。 从表单控件工具栏中选择【查看类】控件,在显示的列表中选择该工具栏类。,9.5 创建工具栏,下一页,返回,上一页, 在表单设计器中单击,即可在表单中添加工具栏对象,然后拖拉工具栏到适当的位置。 为工具栏及其按钮定义操作。定义其操作时,首先选定要定义操作的对象(工具栏或其按钮)。双击鼠标,弹出代码窗口,选择相应的过程,编辑其代码,指定其操作。,9.5 创建工具栏,返回,上一页,在创建包含菜单和工具栏的应用程序时,某些工具栏按钮与菜单项的功能可能相同。使用工具栏可以快速地实现某个功能或进行某种操作。 为了协调菜单和自定义工具栏,在设计应用程序时应注意以下几点: 无论使用菜单项,还是使用与菜单项相对应的工具栏按钮,它们都要执行同样的操作,实现相同的功能,否则,可能会带来误操作或误解。 相关的按钮与菜单项要具有相同的属性设置。,9.6 协调菜单与自定义工具栏,下一页,返回, 创建工具栏,添加命令按钮,并将要执行的代码包括在对应于此命令的Click事件的方法中。 添加协调的工具栏和菜单到一个表单集或屏幕中。,9.6 协调菜单与自定义工具栏,返回,上一页,图9.2 设计菜单的基本步骤,返回,图9.10 【提示选项】对话框,返回,图9.17 设计好的菜单,返回,图9.24 【工具栏】对话框,返回,图9.25 【定制工具栏】对话框,返回,图9.28 【新建类】对话框,返回,