第 12章 菜单设计
本章介绍 VFP中菜单设计器的基本概念、
功能与特点,然后介绍 Visual FoxPro 中
创建、修改以及使用各类菜单的方法。
12.1 菜单设计与 VFP菜单设计器
? 目前的计算机软件系统都是很庞大的,往
往由数十甚至数百个程序组成,每个程序
完成一部分工作。但由于系统庞大,用户
难以准确地指出所需要的程序名。
? 计算机系统的菜单就是借用酒店为顾客提
供一份菜谱,帮助顾客点菜这个思想产生

以 VFP为例介绍一下 Windows系统的菜单组织及名称
? 菜单栏( Menu Bar):列出整个系统可用的菜单笺。
? 菜单笺( Menu Pads):对应一组菜单项。
? 弹出式菜单( Menu Popups):弹出框列出每个菜单项。
? 菜单项( Menu Item):对应一个程序或一个命令。
菜单栏
弹出式菜单
菜单项
菜单笺
菜单设计过程较简单。通常由以下步骤,
? 首先规划与设计菜单系统,确定需要哪些
菜单、出现在界面的何处以及哪几个菜单
要有子菜单 ;
? 然后创建菜单和子菜单,使用菜单设计工
具定义菜单标题、菜单项和子菜单;
? 最后按实际要求为菜单系统指定任务,指
定菜单所要执行的任务,例如显示表单或
对话框等 ;
在 VFP 中设计应用菜单的过程,就是在一个可
视化的环境中,定义应用系统中的菜单栏和每
个菜单笺下的弹出式菜单的过程。例如建立一
个图书管理信息系统,可以将其菜单层次图可
以设置为下图的形式。
图书管理 人员管理 借阅管理 帮助
































使



规划好菜单系统后,就可以使用 VFP中的菜单设计
器创建菜单。菜单设计器其界面如图。
在确认定制好菜单后,就可以生成可执行菜单文件。
使用菜单设计器产生菜单的可执行文件后,就可以
将此菜单应用到管理系统去了。
提示项:表示建立哪
一级菜单 。 可以用滚
动按钮选择 。
列表框, 选择左边的
菜单属性
命令按钮, 创建左边
的菜单的下级菜单
12.2 下拉式菜单设计
? 下拉式菜单是信息管理系统的重要的组成部分。
一个下拉式菜单通常有一个包含数个菜单笺的菜
单栏构成该下拉菜单的基础。对应于每个菜单笺
可以向下弹出一个由一个或多个菜单项构成的弹
出式菜单。
? 在下拉式菜单中,菜单栏中的每一个菜单笺的下
拉菜单可以是一级的,也可以是有多级菜单组成
的多级的下拉菜单。
? 只要资源允许的话,下拉菜单可以嵌套任意多的
层次,为了使操作将变得简洁方便,在设计菜单
时,子菜单嵌套的层次一般不应超过 3层。
? 设计一个拥有适当的菜单层次,又全面涵盖系统
的主要功能的下拉菜单,可以提高系统的可操作
性及界面的友好程度。
定制下拉式菜单
? 首先,根据菜单层次,确定菜单栏由, 图书管
理,,, 人员管理,,, 借阅管理,,, 帮助,
四个菜单笺组成 。
? 然后,打开菜单设计器。点击, 插入, 按钮,分
别将上述四个菜单项的名称输入到菜单设计器中。
由于这四个菜单项下面都有下拉菜单,所以这四
个菜单项的, 结果, 栏内均选择, 子菜单,,。
? 为每个菜单笺定义对应的下拉菜单 。在, 菜单名
称, 列中选中相应的菜单笺,点击, 创建, 按钮
就可以进入该菜单笺的下拉菜单的定制界面。在
这个定制界面中的操作同上。
? 这个下拉菜单中的每个菜单项,对应着具体的功
能,这些菜单项的, 结果, 栏选择了, 命令, 属
性。
? 在编辑框中输入命令,就可以实现相应的功能。
? 定制完下拉菜单后,通过生成菜单的执行文件就
可以得到一个可以使用的下拉式菜单。
12.3 快捷菜单设计
? 快捷菜单主要用在应用程序的控件或对象上,
实现当前控件或对象的快捷功能。它总是在
选中的控件或对象的范围内直接显示,所以
也称为弹出式菜单。
? 快捷菜单通常有一组或多组菜单项构成,每
一个菜单项可以完成一定的快捷功能,也可
以弹出自己的子菜单。
? 若要创建快捷菜单,在 VFP的, 新建, 栏目
中,选择, 菜单, 后,选择需要生成, 快捷
菜单, 的类型,就可以进入快捷菜单设计器。
进入, 快捷菜单设计器,,添加菜单项的过
程与创建下拉式菜单完全相同。
? 将快捷菜单其附加到控件中。当用户在控件上单
击鼠标右键时,显示定制的快捷方式菜单。
? 如果要为控件 Text1添加快捷菜单,快捷菜单的可
执行程序是 PopMenu1.mpr,具体操作就是在控
件 Text1的 right-click事件中输入代码即可将快捷
方式菜单附加到该控件中,如下图示。
12.4 编辑菜单属性
? 12.4.1 创建 SDI菜单 。 SDI菜单是出现在单文档
界面 (SDI) 窗口中的菜单 。 在设计 SDI菜单时必
须指出该菜单用于 SDI表单 。 即在创建菜单时选中
,常规选项, 中的, 顶层表单, 选项 。
? 为所制作的顶层表单设置相应的属性。在表单设计器
中的表单属性界面中的 ShowWindow属性设为, 2--
作为顶层表单,,其它在此表单上调用的表单的
ShowWindow属性设为, 1--在顶层表单中,
? 12.4.2 菜单项分组 。 当菜单项较多时, 可以使用
分隔线将功能相近, 内容相关的的菜单项划分成
逻辑组 。 如果要创建分隔线将菜单项分开只需在
菜单设计器中, 在需要分开的菜单项之间插入一
个新的菜单项, 并将该菜单项的, 菜单名称, 栏
中键入字符, \-”就可以了
? 12.4.4 设置快捷键。使用
快捷键是让您在可以在不
显示菜单的情况下,按下
某组合键,选择菜单或菜
单项 。
? 选择 菜单项的, 选项,
栏中的, 提示选项, 对
话框,在, 键标签, 框中,
按下一组合键,可创建快
捷键。
? 在, 键说明, 框中,添加
您希望在菜单项的旁边出
现的文本。
? 选择 菜单项的, 选项,
栏中的, 提示选项, 对
话框,选择, 跳过,”生成
器按钮。出现, 表达式生
成器, 。
? 在, 跳过, 框中,键入表
达式,如果此表达式取值
为, 假, (.F.),则启用菜
单或菜单项。如果此表达
式取值为, 真, (.T.),则
停用菜单或菜单项。
12.4.5 启用和停用菜单项 。菜单系统中可以根据
一定的逻辑条件来确定菜单或菜单项在程序运行
时是否启用和需要停用。
? 12.4.6 制定菜单、菜单项任务 。选择菜单或菜单
项时,除了弹出下一级子菜单外,还可以要求当
菜单或菜单项被选中时必须要执行一条 VFP命令,
或调用一个过程。
? 若要为菜单或菜单项指定命令,可以在对应菜单
标题或菜单项的, 结果, 框中,选择, 命令, 。
在, 结果, 框右侧的框中,键入正确的命令。
在此输入命令
? 如果要为不含有子菜单的菜单或菜单项指定过程,
可以在相应的菜单标题或菜单项的, 结果, 框中,
选择, 过程, 。选择, 创建, 或, 编辑, 按钮,
就会弹出一个过程代码的编辑对话框,在对话框
中键入正确的代码。
? 如果要为含有子菜单的菜单或菜单项指定过程,
在, 菜单级, 框中,选择包含相应菜单或菜单项
的菜单级。从 VFP系统菜单的, 显示, 菜单中,
选择, 菜单选项, 菜单项,就会显示, 菜单选项,
对话框。可以在, 过程, 框中编写或调用过程。
或者选择, 编辑,,然后再选择, 确定,,打开
独立的编辑窗口并编写或调用过程。
12.4.7 向菜单添加初始化代码和清理代码
? 向菜单系统添加初始化
代码可以定制菜单系统,
其中可以包含创建环境、
定义变量、打开所需文
件以及保存或恢复菜单
系统的代码。
? 要添加初始化代码,可
以选择, 常规选项,,
在, 菜单代码, 区域,
选择, 设置,,弹出初
始化代码编辑窗口,在
窗口中,键入初始化代
码。
? 向菜单系统添加清理代
码可以减小菜单系统的
大小。清理代码中常包
含包含控制菜单或菜单
项是否可用的命令代码
? 若要添加清理代码,可
以选择, 常规选项,,
在, 菜单代码, 区域,
选择, 清理,,弹出清
理代码编辑窗口,在窗
口中键入清理代码
12.5 测试与调试菜单系统
? 在设计菜单系统时,可以预览整个菜单系
统,而在生成菜单程序后则需要对系统进
行测试和调试。
? 若要在设计菜单系统时预览整个系统,可
以在, 菜单设计器, 中,选择, 预览,,
已经定义的菜单系统出现在屏幕的最外层。
? 如果要测试运行菜单系统,从 VFP系统菜单
的, 菜单, 菜单中,选择, 生成,,键入
生成的菜单程序的名称,生成扩展名
为,mpr 的菜单程序文件,直接运行此程序
即可。
本章小结
? 本章重点介绍了使用 VFP中可视化菜单开发
工具 —— 菜单设计器设计实现菜单的全过
程。本章所讲述的内容和书中其他章节阐
述的工具一起,构成 VFP的可视化基础。读
者在学习本章时,要注意学习掌握菜单设
计器的设计对象,一个完整的菜单有那些
设计内容,在菜单设计器中怎样设计这些
内容。