1、第八章,菜单设计,目录,11.1用菜单设计器创建菜单,目 录,退 出,11.1.1菜单组成 菜单系统是有一个菜单栏、多个菜单、菜单项和下拉菜单组成。菜单栏位于窗口标题下的水平条状区域,用于放置各个菜单项。 菜单项是在菜单栏中的一个菜单的名称,也称菜单名,它表示了所代表的一个菜单。单击菜单项即可弹出下拉菜单。 菜单是包含命令、过程和子菜单的选项列表,因此按等级分为父菜单和子菜单,子菜单挂在父菜单下作为父菜单的一个菜单项,如图11.1所示。,目 录,退 出,11.1用菜单设计器创建菜单,菜单的标题要有实际应用意义。菜单项的布置要有一定的顺序,菜单项应在一个屏幕内。 在菜单的下拉菜单项中,有可启用和
2、已废止两种状态。可启用状态的菜单项是黑色的文字。已废止的菜单项是暗灰色的文字。系统菜单中个菜单项状态取决于当时用户操作状态。工具栏的每一个按钮和菜单中的某个菜单项相对应,如果菜单项是可启用的,则它的工具栏按钮也是可启用的,是黑色的。 菜单的下拉菜单项中,用分割线将菜单中内容相关的菜单项分割成组,增强了菜单的可读性。如果菜单左边会出现勾子的标记字符,表示该菜单项被选择。这很类似于单选按钮组。 当菜单项尾部带有一个黑色小三角时,表示这个菜单项还有一级子菜单。,目 录,退 出,11.1用菜单设计器创建菜单,大多数菜单项都有他的一个热键,当同时按下这个菜单项的热键时,即可选择这个菜单项。菜单热键可以代
3、替鼠标的单击操作。 一般菜单项还有他的快捷键,按下它的快捷键,可直接执行相应的操作。 11.1.2创建菜单栏 “菜单设计器”用于设计用户自己的菜单系统。使用“菜单设计器”可以创建并设计菜单栏、菜单项、子菜单、菜单项的快捷键及分割相关菜单组的分隔线等。用“菜单设计器”还可以设计快捷菜单。下面介绍设计菜单的操作步骤。 在“项目管理器”中,选择“其它”选项卡,再选择“菜单”,如图11.2所示。,目 录,退 出,11.1用菜单设计器创建菜单,目 录,退 出,11.1用菜单设计器创建菜单,单击“新建”按钮,屏幕显示“新建菜单”对话框,如图11.3所示。 在“新建菜单”对话框中,单击“菜单”按钮,系统进入
4、“菜单设计器”窗口,如图11.4所示。 在“菜单设计器”窗口中,有4项内容:“菜单名称” 、“结果” 、“选项” 、“菜单级”,4个按钮:“插入”按钮、“插入栏”按钮、“删除”按钮、“预览”按钮,分别说明如下: “菜单名称”:用于指定显示在菜单系统中的菜单项的菜单标题。“菜单名称”列左边的双向箭头按钮,用鼠标拖动可以调整各行的顺序。 “结果”:用于指定在选择菜单项事发生动作类型:子菜单、命令或过程。 “选项”:可进入显示“提示选项”对话框,可以定义键盘快捷键和其它菜单选择。,目 录,退 出,11.1用菜单设计器创建菜单,“菜单级”:用于选择要处理的菜单栏或子菜单。 “插入”按钮:可在“菜单设计
5、器”窗口中插入新行。 “插入栏”按钮:可在“菜单设计器”窗口中插入系统菜单栏:新建、打开、关闭、保存等。 “删除”按钮:可在“菜单设计器”窗口中删除当前行。 “预览”:可显示正在创建的菜单。 11.1.3创建下拉菜单 菜单项创建好后,可以在菜单上设置下拉菜单项。每个菜单项都代表用户的执行过程,菜单项也可以包含提供其他菜单项的子菜单。向菜单中添加菜单项的操作步骤如下: 在“菜单设计器“的“菜单名称”栏中,单击要添加下拉菜单的菜单项。,目 录,退 出,11.1用菜单设计器创建菜单,在“结果”列中,选定“子菜单”命令,使右侧出现“创建”按钮。 单击“创建”按钮,屏幕显示“子菜单”设计窗口,输入菜单项
6、。 在“菜单名称”列中,输入新建的各菜单项的名称。 1114创建子菜单 对于每个菜单项,都可以创建包含其他菜单项的子菜单。创建子菜单的操作步骤如下: 在“菜单名称”列中,单击要添加子菜单的菜单项。 在“结果”列中,选择“子菜单”,使“创建”按钮会出现在列表的右侧。如果已经有了子菜单,则此处出现的是“编辑”按钮。 单击“创建”按钮或“编辑”按钮。 在“菜单名称”列中,输入新建的各子菜单项的名称。,目 录,退 出,11.1用菜单设计器创建菜单,11.1.5创建快捷菜单 在Windows程序中,在对象上单击鼠标右键,便会出现关于这个对象的菜单操作。这种菜单给用户带来了极大的方便。在VFP中同样可以建
7、立这样的快捷菜单。快捷菜单。一般在表单中使用。 设计快捷菜单的操作步骤如下: 在“项目管理器”中,选择“其他”选项卡再选择“菜单”,如图11.2所示。 单击“新建”按钮,屏幕显示“新建菜单”对话框,如图11.3所示。 在“新建菜单”对话框中,单击“快捷菜单”按钮,系统进入“快捷菜单设计器”窗口,如图11.5所示。实际上“快捷菜单设计器”窗口与“菜单设计器”窗口的结构相同,建立方法也相同。,目 录,退 出,11.1用菜单设计器创建菜单,目 录,退 出,11.1用菜单设计器创建菜单,在“菜单名称”栏中,输入快捷菜单的第一个菜单项,例如,“D日期”。 在“结果”列中,选择“过程”,使右侧出现“创建”
8、按钮。 单击“创建”按钮,屏幕显示“过程”代码窗口。 在“过程”代码窗口中,可以输入过程代码,如图11.6所示。 关闭“日期过程”代码窗口。 生成菜单。在“菜单”选项中生选择“生成”命令,打开“生成菜单”对话框,选择输出文件的路径和文件名,例如:“D:VFP菜单1.mpr。,目 录,退 出,11.1用菜单设计器创建菜单,单击“生成”按钮,生成菜单。 例如,创建菜单的响应表单,其具体步骤如下: 在“项目管理器”中,选择“文档”选项卡。 选择“表单”选项,单击“新建”按钮,屏幕显示“新建表单”对话框。 在“新建表单”对话框中,单击“新建表单“按钮,进入“表单设计器”窗口。 在“表单设计器”窗口中,
9、添加一个编辑框控件Edit1和一个命令按钮控件Command1。 将命令按钮“Caption”属性设置为“退出”,如图11.7所示。 在“显示”菜单中,选择“代码”命令。,目 录,退 出,11.1用菜单设计器创建菜单,在代码窗口中,选择“Command1”单击事件“Click”,加入如下代码:THISFORM.RELEASE 在代码窗口中,选择“EDIT1“的右击事件RIGHTCLICK,加入如下代码:DO E:VFP菜单1.MPR &执行快捷菜单 关闭代码窗口。 从“表单”菜单中,选择“执行表单”。 在表单的编辑框中,单击鼠标右键,屏幕出现快捷菜单。如图11.8所示。 选择“日期”,屏幕显示
10、出“日期”对话框,如图11.9所示,单击“确定”,关闭对话框。,目 录,退 出,11.1用菜单设计器创建菜单,目 录,退 出,11.1用菜单设计器创建菜单,1116 设计菜单组的分隔线为了增加菜单的可读性,可使用分隔线,将功能相似的菜单项分隔成组,操作步骤如下: 在“菜单名称”列中,输入“-”来取代一个菜单项。 拖动“-”提示符左侧的按钮,将分隔线移动到所希望的位置。 11.1.7指定热键 设计良好的菜单都应具有热键,此功能可使用户通过键盘快速地访问菜单。 为菜单或菜单项指定热键的方法为:只需在希望成为热键的字母左侧键入“”。例如,在“菜单名称”列中,将“文件(F)”菜单使用“F”作为热键,只
11、需在菜单名称中加入(F),热键在菜单或下拉菜单项上用带下划线的大写字母表示。然后按下“ALT+F”键,即可激活文件菜单项目。,目 录,退 出,11.1用菜单设计器创建菜单,如果没有为某个菜单栏或下拉菜单项指定热键,将自动指定第一个字母作为热键。 1118 添加快捷键 除了指定热键以外,还可以为菜单或下拉菜单项指定键盘快捷键,菜单的快捷键提供了键盘直接执行菜单命令的方法。如同热键一样,使用键盘快捷键,可以提高选择菜单项的速度。使用快捷键可以在不显示菜单的情况下,选择此菜单上某个菜单项。 键盘快捷键一般用CTRT或ALT键与另一个键相组合。例如,按CTRL+N可在VFP中创建新文件。为菜单或菜单项
12、指定键盘快捷键的操作步骤如下: 在“菜单名称”栏中,选择相应的菜单标题或菜单项。 单击“选项”栏下的按钮,屏幕将显示“提示选项 ”对话框,如图11.10所示。,目 录,退 出,11.1用菜单设计器创建菜单,目 录,退 出,在“键标签”框中,按下一个组合键,此时在“键标签”和“键说明”框中,都会显示所按下的快捷键。例如,选择“文件”菜单下的“新建”子菜单项,按下CTRL+N即可。 选择:“跳过”框,并输入表达式,此表达式将用于确定是启动还是停止菜单或菜单项。,11.1用菜单设计器创建菜单,1119 菜单的修改 菜单创建完成后,难免有不妥之处,此时可以使用“菜单设计器”,删除菜单项或增加菜单项。
13、删除菜单项的操作步骤如下: 在“菜单设计器”的菜单列表中,单击要删除的菜单项。 单击“删除”按钮,或选择“菜单”的下拉菜单的“删除菜单项”的命令。 在“系统提示”对话框中,单击“是”按钮,则选中的菜单项被删除。 选择“文件”菜单中的“保存”选项,可以把改过的菜单项保存到菜单中。 增加菜单项操作步骤如下: 单击“菜单名称”列中的任意一菜单项。,目 录,退 出,11.1用菜单设计器创建菜单,单击右侧“菜单项:”中的“插入:”按钮,就可以插入一个菜单项。 把插入的菜单项保存到菜单中,选择“文件”菜单中的“保存”选项就可以了。 11110 保存菜单 保存菜单就是将菜单存为磁盘文件,文件名的后缀为。MN
14、X编译文件名的后缀是。MPX。执行文件名的后缀是,。MPR。保存后的菜单,可以像使用应用程序一样来使用它。保存菜单的操作步骤如下: 单击“文件”菜单项中的“保存”选项,屏幕显示“另存为”对话框。 在“另存为”对话框中,选定要保存的目录,再输入要保存的文件名,例如,E:VF菜单1.MNX,如图11.11所示。,目 录,退 出,目 录,退 出,11.1用菜单设计器创建菜单,11.1用菜单设计器创建菜单,单击“保存”按钮,则菜单被保存,并被添加到“项目管理器”中的“菜单”项中,单击其前面的“+”,可以看到此菜单文件名,如图11.12所示。 在“菜单”菜单中,选择“生成”命令,屏幕显示“生成菜单”对话
15、框,单击“生成”按钮,就会生成扩展名为。MPR的菜单程序文件。例如:D:VFP1菜单1.MPR。 在“项目管理器”中,选择“运行”命令,运行菜单程序。,目 录,退 出,112 用快速菜单创建菜单,使用“快速菜单”命令,创建菜单的操作步骤如下: 在“项目管理器”中,选择“其他”选项卡。 选定“菜单”选项,如图11.3所示。 单击“新建”按钮,屏幕显示“新建菜单”对话框,单击“菜单”按钮,屏幕显示如图11.4所示的“菜单设计器”窗口,默认的菜单名是:菜单加上建立的顺编号,如菜单1,菜单2,菜单3等。,目 录,退 出,112 用快速菜单创建菜单,目 录,退 出,在主“菜单”项中,单击“快速菜单”命令
16、,如图11.13所示,即把VFP系统菜单加到“菜单设计器”中,如图11.14所示。,112 用快速菜单创建菜单,“菜单名称”列是菜单栏的菜单项,菜单项中括号里放的是热键字母,其先导字符是“”。 “结果”列都是“子菜单”,表明这些菜单项下挂的都是子菜单。单击“编辑”按钮,可编辑修改子菜单。 “菜单设计器”当前行的“结果”是一个下拉列表框,有4种可选项: 如果选择“命令”或“主菜单名”,则在“结果”列之后出现文本框,可在其中输入命令或填写菜单名称。 如果选择“子菜单”或“过程”,则在“结果”列之后出现“创建”按钮,如果已经创建,则出现在“编辑”按钮。 如果要改变菜单上各菜单的位置,则拖动“移动”按
17、钮。 将“菜单设计器”的第一行设为当前行。 单击“编辑”按钮。可使“菜单设计器”进入子菜单进行编辑。 例如,“文件”子菜单的各菜单项的内容如图11.15所示。,目 录,退 出,112 用快速菜单创建菜单,注意到“结果”下拉列表框中的内容和菜单栏略有不同:没有“填充名称”,而有“菜单项#”。这里“结果”栏中的“菜单项#”右边是菜单项的名称,如图11.15所示,表示“菜单项#”这个子菜单将利用数字来辨识选取的是哪一个选项。 快速生成的菜单和系统菜单相同,其中的功能项可以增加,修改或删除。这些操作,都可以在“菜单设计器”中进行,在进一步设计之前,一定要先选保存此菜单。,目 录,退 出,11.3向菜单
18、添加事件代码,1131 向菜单添加“清理”代码 当程序运行时,会发现菜单不能停留在屏幕上,这是因为菜单中没有循环代码等待用户操作。为了让菜单能停留在屏幕上等待用户选择,需要在菜单的“清理”人码中加入代码READ EVENTS。向菜单系统添加清理代码的操作步骤如下: 打开要添加事件代码的菜单文件,系统进入“菜单设计器”对话框。 要“显示”菜单中,选择“常规选项”命令,屏幕显示“常规选项”对话框,如图11.16所示。 在“菜单代码”区域,选择“清理”复选框,打开“代码”窗口。 在“常规选项”对话框中,单击“确定”按钮,激活VFP为清理代码显示的独立窗口,如图11.17所示。,目 录,退 出,11.
19、3向菜单添加事件代码,目 录,退 出,在清理代码窗口中,输入正确的清理代码,例如,输入READ EVENTS命令,并按CTRL+W存盘退出,作为应用程序中主程序的菜单。,11.3向菜单添加事件代码,此窗口,返回到“菜单设计器”窗口,保存菜单系统时,VFP同时保存清理代码。 说明: 为了保证菜单系统的正常退出,在“清理代码”窗口中,必须输入READ EVENTS命令,并按CTRL+W存盘退出。 创建和运行菜单程序时,清理代码要紧跟在初始化代码及菜单定义代码之后,而在为菜单或菜单项指定的过程代码之前。 通过各菜单系统添加清理代码类,可剪裁菜单系统,典型的清理代码包含初始时启用或废止菜单及菜单项的代
20、码。,目 录,退 出,11.3向菜单添加事件代码,11.3.2向菜单系统添加初始化代码 向菜单系统添加初始化代码,可以定制菜单系统。初始化代码可以包含创建环境的代码,定义内存变量的代码,打开所需文件代码以及使用PUSH MENU和POP MENU命令来保存或还原菜单系统的代码。向菜单系统添加初始化代码的操作步骤如下: 打开要添加初始化代码的菜单文件,系统进入“菜单设计”对话框。 在“显示”菜单中,选择“常规选项”命令,屏幕显示“常规选项”对话框。 在“常规选项”对话框的“菜单代码”列表框中,选择“设置”复选框,打开“代码”窗口。 单击“确定”按钮,系统将显示一个独立的“初始化代码”窗口。 在“
21、初始化代码”窗口中,输入需要的初始化代码,按CTRL+W键存盘并退出。,目 录,退 出,11.3向菜单添加事件代码,关闭此窗口,返回到“菜单设计器”窗口,保存菜单系统时,VFP同时保存初始化代码。 1133 启用和废止菜单项 在“菜单名称”栏中,单击相应的菜单标题或下拉菜单。 单击“选项”栏中的按钮,屏幕将显示“提示选项”对话框。 选择“跳过”复选框右侧的“-”按钮,屏幕显示“表达式生成器”对话框。 在“跳过”框中,输入表达式 ,此表达式将用于确定是启用还是停止菜单或菜单项。 如果此表达式取值为“假”,则废止菜单或菜单项。如果此表达式取值为“真”,则启用菜单或菜单项。 显示菜单系统后,可以使用
22、SET SKIP OFF命令,控制启动或废止菜单及菜单项。,目 录,退 出,11.3向菜单添加事件代码,1134 为菜单或菜单项指定任务 定义好了菜单后,还需要为各个菜单指定任务,使之与系统和各个功能模块挂接起来,选择一个菜单或菜单项时。,将执行相应的任务,为菜单或菜单项指定一个命令去执行相应的任务。此命令可以是任何有效的VFP的一条语句,包括对程序和过程的调用,被调用的程序要在指定的路径上,要调用的过程,则应该在“常规选项”对话框是指定“清理”复选框为有效。 指定命令 为菜单或菜单项指定命令的操作步骤如下: 在“菜单名称”栏中,选择相应的菜单标题或菜单项。 在“结果”栏中,选择“命令”。 在
23、“结果”栏右侧的“编辑”框中,输入相应的命令。,目 录,退 出,11.3向菜单添加事件代码,指定过程 其操作步骤如下: 在“菜单名称”栏中,选择相应的菜单标题或菜单项。 在“结果”栏中,选择“过程”,“创建”按钮出现在列表的右侧,如果已定义了一个过程,则这里出现的是“编辑”按钮。 单击“创建”或“编辑”按钮屏幕显示“编辑过程”窗口,如图11.18所示。在窗口中,输入要执行的代码 。,目 录,退 出,11.3向菜单添加事件代码,为含有子菜单的菜单或菜单项指定过程,其操作步骤如下: 在“菜单设计器”的“菜单级”栏中,选择包含相应菜单或菜单英的菜单级。 选择“显示”菜单的“菜单选项”命令,屏幕显示“
24、菜单选项”对话框,如图11.19所示。 在“过程”编辑栏中,编写或调用过程,或者单击“编辑”按钮,然后再选择“确定”按钮。打开一个独立的编辑窗口,可以编写或调用过程。,目 录,退 出,11.3向菜单添加事件代码,1135 预览菜单系统 当用户完成菜单的设置后,可以预览整个菜单系统。在“菜单设计器”中,选择“预览”,并且已经定义的菜单系统会出现在当前屏幕窗口的最外层,如图11.20所示。,目 录,退 出,11.3向菜单添加事件代码,1136 运行菜单系统 运行菜单系统的操作步骤如下: 在“菜单”选项中选择“生成”命令,屏幕显示“生成菜单”对话框,如图11.21所示。 在“另存为”对话框中,输入要
25、保存的菜单程序的名称。 单击“生成”按钮,就会生成扩展名为。MPR的菜单程序文件。 在“项目管理器”中,选择“运行”命令,运行菜单程序,如图11.22所示。,目 录,退 出,11.3向菜单添加事件代码,目 录,退 出,114 修饰菜单,1141 显示状态栏信息 定菜单或菜单项设置显示状态栏信息,可按以下步骤进行: 在“菜单名称”栏中,选择相应的菜单标题或菜单项。 单击“选项”栏中的按钮,弹出“提示选项”对话框,如图11.23所示 在“信息”框中,输入相应的状态栏信息,也可单击右边的“-”按钮,进入“表达式 生成器”对话框,并在“信息”框中,输入相应的状态栏信息,(用引号将字符串括起来)如图11
26、.23所示。,目 录,退 出,114 修饰菜单,1142 定义菜单标题的位置 为用户自定义的菜单标题指定相对位置,其操作步骤如下: 在“菜单设计器”窗口中,在“菜单”中,选择“常规选项”命令,屏幕显示“常规选项”对话框, 在“位置”框中,选择适当的选项:“替换”,“追加”,“在-之前”或“-之后”,如图11.24所示。,目 录,退 出,114 修饰菜单,1143 为菜单系统创建默认过程 可以创建一个全局过程,应用于整个菜单系统。创建默认过程的操作如下: 打开正在设计的菜单系统。 在“菜单设计器”的“菜单”中,选择“常规选项”命令。 选择下列任一操作,指定过程: 在“过程”框中,编写或调用过程。单击“编辑”按钮,再单击“确定”按钮,打开一个独立的编辑窗口,然后编写或调用过程。,目 录,退 出,