1VFP程序设计与实现isualFVoxPro2VFP程序设计与实现本章主要介绍菜单系统的规划以及如何使用菜单设计器来设计一个常用的菜单系统。3VFP程序设计与实现13.1规划菜单系统13.2用菜单设计器创建菜单13.3向菜单添加事件代码13.4创建快捷菜单4VFP程序设计与实现13.1规划菜单系统13.1.1菜单组成菜单栏多个菜单菜单项下拉菜单组成5VFP程序设计与实现13.1.2菜单系统的规划原则按照用户所要执行的任务组织菜单系统,而不是按应用程序的层次组织菜单给每个菜单一个有意义的标题。标题应简单,能够反映要执行的任务按照估计的菜单项的使用频率、逻辑顺序或字母顺序组织菜单项在菜单项的逻辑组之间放置分隔线将菜单上的基础数目限制在一个屏幕之内为菜单和菜单项设置热键或键盘快捷键。使用能够准确描述菜单项的文字。在菜单项中混合使用大小字母菜单系统的质量直接关系到应用程序系统的质量,规划合理的菜单,有利于用户接受应用程序,方便用户理解应用程序的功能。6VFP程序设计与实现13.2用菜单设计器创建菜单13.2.1启动菜单设计器7VFP程序设计与实现13.2.2创建菜单栏、菜单项和子菜单1.创建菜单栏在“菜单设计器”对话框中的“菜单名称”列输入菜单的标题,在“结果”列中选择该菜单项的结果类型。8VFP程序设计与实现2.创建下拉菜单菜单项创建好后,可以在菜单上设置下拉菜单项。每个菜单项都代表用户执行的过程,菜单项也可以包含提供其他菜单项的子菜单。(1)选中“菜单设计器”对话框中的“查询”菜单项,在“结果”列中选中结果类型为“子菜单”。此时“结果”列的右侧出现一个“创建”按钮,单击该按钮,弹出“菜单设计器-菜单1”对话框。(2)在对话框的“菜单名称“列中输入新建各项菜单的标题9VFP程序设计与实现3.创建子菜单对于每个菜单项,都可以创建包含其他菜单项的子菜单。创建子菜单的操作步骤如下:(1)在“菜单名称”列中,单击要添加子菜单的菜单项。(2)在“结果”列中,选择“子菜单”,使“创建”按钮会出现在列表的右侧。如果已经有了子菜单,则此处出现的是“编辑”按钮。(3)单击“创建”按钮或“编辑”按钮。(4)在“菜单名称”列中,输入新建的各子菜单项的名称。10VFP程序设计与实现13.2.3设计菜单组的分隔线在“菜单名称”列中,输入“\-”来取代一个菜单项。拖动“\-”提示符左侧的按钮,将分隔线移动到所希望的位置。选中“课程查询”菜单项,单击“插入”按钮。将“新菜单项”删除,输入“\-”,预览菜单。为了增加菜单的可读性,可使用分隔线,将功能相似的菜单项分隔成组,操作步骤如下:11VFP程序设计与实现13.2.4指定热键设计良好的菜单都应具有热键,此功能可使用户通过键盘快速地访问菜单。为菜单或菜单项指定热键的方法为:只需在希望成为热键的字母左侧输入“\”12VFP程序设计与实现13.2.5添加快捷键在“菜单名称”栏中,选择相应的菜单标题或菜单项单击“选项”栏下的按钮,屏幕将显示“提示选项”对话框在“键标签”框中,按下一组合键,此时在“键标签”和“键说明”框中,都会显示所按下的快捷键。例如,选择“文件”菜单下的“新建”子菜单项,按下CTRL+N即可选择“跳过”框,并输入表达式,此表达式将用于确定是启动还是停止菜单或菜单项13VFP程序设计与实现13.2.6菜单的修饰显示状态栏信息定义菜单标题的位置为菜单系统创建默认过程14VFP程序设计与实现13.2.7菜单的修改(1)在“菜单设计器”的菜单列表中,单击要删除的菜单项。(2)单击“删除”按钮,或选择“菜单”的下拉菜单的“删除菜单项”命令。(3)在“系统提示”对话框中,单击“是(Y)”按钮,则选中的菜单项被删除。(4)选择“文件”菜单中的“保存”选项,可以把改过的菜单项保存到菜单中了。1.删除菜单项15VFP程序设计与实现(1)单击“菜单名称”列中的任意一菜单项。(2)单击右侧“菜单项”中的“插入”按钮,就可以插入一个菜单项。(3)把插入的菜单项保存到菜单中,选择“文件”菜单中的“保存”选项就可以了2.增加菜单项16VFP程序设计与实现13.2.8菜单的保存单击“文件”菜单项中的“保存”选项在“另存为”对话框中,选定要保存的目录,再输入要保存的文件名单击“保存”按钮,则菜单被保存在系统的“菜单”菜单项中,选择“生成”命令保存菜单就是将菜单存为磁盘文件,文件名的后缀是.MNX。编译文件名的后缀是.MPX。执行文件名的后缀是.MPR。保存后的菜单,可以像使用应用程序一样来使用它。17VFP程序设计与实现13.3向菜单添加事件代码打开要添加事件代码的菜单文件,系统进入“菜单设计器”对话框。在“显示”菜单中,选择“常规选项”命令,屏幕显示“常规选项”对话框,。在“菜单代码”区域,选择“清理”复选框,打开“代码”窗口。在“常规选项”对话框中,单击“确定”按钮,激活VFP为清理代码显示的独立窗口。在清理代码窗口中,输入正确的清理代码,例如,输入READEVENTS命令,并按Ctrl+W存盘退出,作为应用程序中主程序的菜单关闭此窗口,返回到“菜单设计器”窗口13.3.1向菜单添加“清理”代码当程序运行时,会发现菜单不能停留在屏幕上,这是因为菜单中没有循环代码等待用户操作。为了让菜单能停留在屏幕上等待用户选择,需要在菜单的“清理”代码中加入代码READEVENTS。18VFP程序设计与实现13.3.2向菜单系统添加初始化代码打开要添加初始化代码的菜单文件,系统进入“菜单设计器”对话框。在“显示”菜单中,选择“常规选项”命令,屏幕显示“常规选项”对话框。在“常规选项”对话框的“菜单代码”列表框中,选择“设置”复选框,打开“代码”窗口。单击“确定”按钮,系统将显示一个独立的“初始化代码”窗口。在“初始化代码”窗口中,输入需要的初始化代码,按Ctrl+W键存盘并退出。关闭此窗口,返回到“菜单设计器”窗口初始化代码可以包含创建环境的代码、定义内存变量的代码、打开所需文件代码以及使用PUSHMENU和POPMENU命令来保存或还原菜单系统的代码。19VFP程序设计与实现13.3.3启用和废止菜单项在“菜单名称”栏中,单击相应的菜单标题或下拉菜单单击“选项”栏中的按钮,屏幕将显示“提示选项”对话框选择“跳过”复选框右侧的“…”按钮,屏幕显示“表达式生成器”对话框在“跳过”框中,输入表达式,此表达式将用于确定是启用还是停止菜单或菜单项用户可根据逻辑条件启用或废止菜单及菜单项,若要启用或废止菜单及菜单项,请按以下步骤进行:20VFP程序设计与实现13.3.4为菜单或菜单项指定任务.指定命令指定过程选择一个菜单或菜单项时,将执行相应的任务。为菜单或菜单项指定一个命令去执行相应的任务。此命令可以是任何有效的VFP的一条语句,也可以是一个过程的调用。21VFP程序设计与实现13.3.5预览菜单系统在“菜单设计器”中设计一个菜单的过程中,可以随时单击“预览”按钮或者选中系统“菜单”中的“预览”菜单项来观察设计的效果。22VFP程序设计与实现13.3.6运行菜单系统运行菜单系统的操作步骤如下:(1)保存该菜单。(2)选中系统“程序”菜单中的“运行”菜单项,找到所要运行的菜单程序或者在命令窗口中直接输入命令:DOC:\VFP98\菜单1.mpr23VFP程序设计与实现13.4创建快捷菜单快捷菜单和普通菜单的创建方法是几乎一样的。但两者的用途却是不同的。所谓快捷菜单,简单地说,就是在屏幕(或控件中)右击鼠标时弹出来的菜单。