第11章菜单设计•一个好的应用程序应该具有较好的界面,VFP6.0最为常见的用于显示和编辑的界面的是表单。然而,对整个应用程序的设计仅仅有表单是不够的。对大多数用户而言,首先见到的是菜单,在菜单的导航支持下才进入一个个表单,在表单中,又可以通过各种控件来实现各种功能。本章主要介绍如何设计菜单。11.1用菜单设计器创建菜单11.1.1菜单组成–菜单系统是由一个菜单栏、多个菜单、菜单项和下拉菜单组成。菜单栏位于窗口标题下的水平条状区域,用于放置各个菜单项。菜单项是在菜单栏中的一个菜单的名称,也称菜单名,它标识了所代表的一个菜单。单击菜单项即可弹出下拉菜单。菜单是包含命令、过程和子菜单的选项列表,因此按等级分为父菜单和子菜单,子菜单挂在父菜单下作为父菜单的一个菜单项。11.1.1菜单组成(1)在菜单的下拉菜单项中,有可启用和已废止两种状态。可启用状态的菜单项是黑色的文字。已废止的菜单项是暗灰色的文字。系统菜单中各菜单的菜单项状态取决于当时用户操作状态。工具栏的每个按钮和菜单中的某个菜单项相对应,如果菜单项是可启用的,则它的工具栏按钮也是可启用的,是黑色的。(2)菜单的下拉菜单项中用分隔线,将菜单中内容相关的菜单项分隔成组,增强了菜单的可读性。如果菜单左边会出现勾子的标记字符,表示该菜单项被选择。这很类似于单选按钮组。\-11.1.1菜单组成(3)当菜单项尾部带有一个黑色小三角时,表示这个菜单项还有一级子菜单。(4)大多数菜单项都有它的一个热键,当同时按下这个菜单项的热键即可选择这个菜单项。菜单热键可以代替鼠标的单击操作。(5)一般菜单项还有它的快捷键,按下它的快捷键,可直接执行相应的操作。11.1.2•使用“菜单设计器”可以创建并设计菜单栏、菜单项、子菜单、菜单项的快捷键及分隔相关菜单组的分隔线等。用“菜单设计器”还可以设计快捷菜单。操作步骤:(1)在“项目管理器”中,选择“其他”选项卡,再选择“菜单”或文件-新建-菜单(2)单击“新建”按钮,屏幕显示“新建菜单”对话框。(3)单击“菜单”按钮,系统进入“菜单设计器”窗口。在“菜单设计器”窗口中,有4项内容:“菜单名称”、“结果”、“选项”、“菜单级”,4个按钮:“插入”按钮、“插入栏”按钮、“删除”按钮、“预览”按钮,分别说明如下:“菜单名称”:用于指定显示在菜单系统中的菜单项的菜单标题。“菜单名称”列左边的双向箭头按钮,用鼠标拖动可以调整各行的顺序。“结果”:用于指定在选择菜单项时发生动作类型:子菜单、命令或过程。“选项”:可进入显示“提示选项”对话框,可以定义键盘快捷键和其他菜单选择。11.1.211.1.2“菜单级”:选择要处理的菜单栏或子菜单。“插入”按钮:可在“菜单设计器”窗口中,插入新行。“插入栏”按钮:可在“菜单设计器”窗口中,插入系统菜单栏:新建、打开、关闭、保存等。“删除”按钮:可在“菜单设计器”窗口中,删除当前行。“预览”:可显示正在创建的菜单。11.1.3创建子(下拉)•对于每个菜单项,都可以创建包含其他菜单项的子菜单。创建子菜单的操作步骤如下:(1)在“菜单名称”列中,单击要添加子菜单的菜单项。(2)在“结果”列中,选择“子菜单”,使“创建”按钮会出现在列表的右侧。如果已经有了子菜单,则此处出现的是“编辑”按钮。(3)单击“创建”按钮或“编辑”按钮。(4)在“菜单名称”列中,输入新建的各子菜单项的名称。11.1.4•在Windows程序中,在对象上单击鼠标右键,便会出现关于这个对象的菜单操作。在VFP中同样可以建立这样的快捷菜单。快捷菜单一般在表单中使用。•设计快捷菜单的操作步骤如下:(1)在“项目管理器”中,选择“其他”选项卡,再选择“菜单”或文件-新建-菜单(2)单击“新建”按钮,屏幕显示“新建菜单”对话框,。(3)在“新建菜单”对话框中,单击“快捷菜单”按钮,系统进入“快捷菜单设计器”窗口。实际上“快捷菜单设计器”窗口与“菜单设计器”窗口的结构相同,建立方法也相同。11.1.5创建快捷菜单(4)与上节中设计菜单相似方法,在快捷菜单设计器窗口中设计快捷菜单,生成菜单程序文件。(5)在快捷菜单的清理代码中添加清除菜单的命令,使得在选择、执行菜单命令后能及时清除菜单,释放其所占用的内存空间。命令格式如下:RELEASEPOPUPS快捷菜单名[EXTENDED]创建快捷菜单的响应表单。(6)在表单设计器环境下,选定需要添加快捷菜单的对象。(7)在选定对象的RIGHTClick事件代码冲添加调用快捷菜单程序的命令:DO快捷菜单程序文件名其中文件名的扩展名.mpr不能省略。11.1.5创建快捷菜单11.1.6设计菜单组的分隔线•为了增加菜单的可读性,可使用分隔线,将功能相似的菜单项分隔成组,操作步骤如下:(1)在“菜单名称”列中,输入“\-”来取代一个菜单项。(2)拖动“\-”提示符左侧的按钮,将分隔线移动到所希望的位置。11.1.7•设计良好的菜单都应具有热键,此功能可使用户通过键盘快速地访问菜单。•为菜单或菜单项指定热键的方法为:只需在希望成为热键的字母左侧输入“\”。例如,在“菜单名称”列中,将“文件(F)”菜单使用“F”作为热键,只需在菜单名称中加入(\F)”,热键在菜单或下拉菜单项上用带下划线的大写字母表示。然后按下“Alt+F”键,即可激活文件菜单项目。•如果没有为某个菜单栏或下拉菜单项指定热键,将自动指定第一个字母作为热键。11.1.8•菜单的快捷键提供了键盘直接执行菜单命令的方法。如同热键一样,使用键盘快捷键,可以提高选择菜单项的速度。使用快捷键可以在不显示菜单的情况下,选择此菜单上某个菜单项。键盘快捷键一般用Ctrl或Alt键与另一个键相组合。例如,按Ctrl+N可在VFP中创建新文件。为菜单或菜单项指定键盘快捷键的操作步骤如下:(1)在“菜单名称”栏中,选择相应的菜单标题或菜单项。(2)单击“选项”栏下的按钮,屏幕将显示“提示选项”对话框,。(3)在“键标签”框中,按下一组合键,此时在“键标签”和“键说明”框中,都会显示所按下的快捷键。例如,选择“文件”菜单下的“新建”子菜单项,按下CTRL+N即可。(4)选择“跳过”框,并输入表达式,此表达式将用于确定是启动还是停止菜单或菜单项。11.1.9•使用“菜单设计器”,删除菜单项或增加菜单项。1.删除菜单项(1)在“菜单设计器”的菜单列表中,单击要删除的菜单项。(2)单击“删除”按钮,或选择“菜单”的下拉菜单的“删除菜单项”命令。(3)在“系统提示”对话框中,单击“是(Y)”按钮,则选中的菜单项被删除。(4)选择“文件”菜单中的“保存”选项。2.增加菜单项(1)单击“菜单名称”列中的任意一菜单项。(2)单击右侧“菜单项”中的“插入”按钮,就可以插入一个菜单项(3)把插入的菜单项保存到菜单中。11.1.10•保存菜单就是将菜单存为磁盘文件,文件名的后缀是.MNX。编译文件名的后缀是.MPX。执行文件名的后缀是.MPR。保存后的菜单,可以像使用应用程序一样来使用它。(1)单击“文件”菜单项中的“保存”选项,屏幕显示“另存为”对话框。(2)在“另存为”对话框中,选定要保存的目录,再输入要保存的文件名,例如:D:\VFP1\菜单1.mnx(3)单击“保存”按钮,则菜单被保存,并被添加到“项目管理器”中的“菜单”项中,单击其前面的“+”,可以看到此菜单文件名,。(4)在“菜单”菜单中,选择“生成”命令,屏幕显示“生成菜单”对话框,单击“生成”按钮,就会生成扩展名为.mpr的菜单程序文件。例如:D:\VFP1\菜单1.mpr。(5)在“项目管理器”中,选择“运行”命令,运行菜单程序。11.2用快速菜单创建菜单•创建菜单可以通过定制已有的VFP菜单系统,或者开发自己的菜单系统来实现。要从已有的VFP菜单系统开始创建菜单,必须使用“快速菜单”功能。•VFP的“快速菜单”是在“菜单”的下拉菜单中的一个选项。它以系统菜单为模板,使用它可以把VFP加载到空的“菜单设计器”中。在“菜单设计器”中,在系统菜单基础上进行修改设计,可以方便快速地完成菜单设计。使用“快速菜单”命令,创建菜单的操作步骤如下:–(1)在“项目管理器”中,选择“其他”选项卡。–(2)选定“菜单”选项,。–(3)单击“新建”按钮,屏幕显示“新建菜单”对话框,单击“菜单”按钮,默认的菜单名是:菜单加上建立的顺编号,如菜单1、菜单2、菜单3等。(1)在“项目管理器”中,选择“其他”选项卡。(2)选定“菜单”选项,。(3)单击“新建”按钮,屏幕显示“新建菜单”对话框,单击“菜单”按钮,默认的菜单名是:菜单加上建立的顺编号,如菜单1、菜单2、菜单3等。11.2用快速菜单创建菜单11.2用快速菜单创建菜单(4)在主“菜单”项中,单击“快速菜单”命令。“菜单名称”列是菜单栏的菜单项,菜单项中括号里放的是热键字母,其先导字符是“\”。“结果”列都是“子菜单”,表明这些菜单项下挂的都是子菜单。按“编辑”按钮,可编辑修改子菜单。“菜单设计器”当前行的“结果”是一个下拉列表框,有4种可选项:如果选择“命令”或“主菜单名”,则在“结果”列之后出现文本框,可在其中输入命令或填写菜单名称。如果选择“子菜单”或“过程”,则在“结果”列之后出现“创建”按钮,如果已经创建,则出现“编辑”按钮。如果要改变菜单上各菜单的位置,则拖动移动按钮。(5)将“菜单设计器”的第一行设为当前行。(6)单击“编辑”按钮,可使“菜单设计器”进入子菜单进行编辑。例如,“文件”子菜单的各菜单项的内容。11.2用快速菜单创建菜单11.3为菜单或菜单项指定任务•选择一个菜单或菜单项时,将执行相应的任务。为菜单或菜单项指定一个命令去执行相应的任务。此命令可以是任何有效的VFP的一条语句,包括对程序和过程的调用,被调用的程序要在指定的路径上,要调用的过程,则应该在“常规选项”对话框中指定“清理”复选框为有效。定义好了菜单后,还需要为各个菜单指定任务,使之与系统和各个功能模块挂接起来。1.指定命令(1)在“菜单名称”栏中,选择相应的菜单标题或菜单项。(2)在“结果”栏中,选择“命令”。(3)在“结果”栏右侧的“编辑”框中,输入相应的命令。如果该命令调用了菜单清理代码中的一个过程,必须使用具有以下格式的DO命令:DOProcNameINMenuName在上述的语法中,ProcName是要执行的过程名,MenuName是包含这个过程的菜单文件名,其扩展名是.mpr,而该过程在菜单的清理代码中,必须使用SETPROCEDURETOMenuName.mpr,指定此过程的位置。11.3为菜单或菜单项指定任务2.指定过程为菜单或菜单项指定过程的方式取决于菜单或菜单项是否有子菜单。为不含有子菜单的菜单或菜单项指定过程:(1)在“菜单名称”栏中,选择相应的菜单标题或菜单项。(2)在“结果”栏中选择“过程”。“创建”按钮出现在列表的右侧。如果已定义一个过程,则这里出现的是“编辑”按钮。(3)单击“创建”或“编辑”按钮,屏幕显示“编辑过程”窗口,。(4)在窗口中,输入要执行的代码。11.3为菜单或菜单项指定任务•为含有子菜单的菜单或菜单项指定过程:(1)在“菜单设计器”的“菜单级”栏中,选择包含相应菜单或菜单项的菜单级。(2)选择“显示”菜单的“菜单选项”命令,屏幕显示“菜单选项”对话框,。11.3为菜单或菜单项指定任务例:创建一主菜单项“退出并返回VFP”,在“结果”栏中选择“过程”,并为之创建一个过程。1.单击“退出并返回VFP”行中的“创建”按钮,此时打开一个创建“退出并返回VFP”过程的“菜单设计器”对话框。2.在该对话框中输入如下程序代码(每个命令行都要按Enter键结束),检查程序代码后,关闭对话框。clearsetsysmenutodefaultclearevent11.4运行菜单系统的操作步骤如下:1.在“菜单”菜单中,选择“生成”命令,屏幕显示“生成菜单”对话框。2.选择“程序”菜单3.选择“执行”4.在打开对话框中选择生成的.mpr文件5.单击“确定”按钮。