2010-5-20 Visual FoxPro 6.0程序设计 1
第 9章 VFP6菜单设计
学习要点
1、规划应用程序菜单系统。
2、使用菜单设计器设计应用系统菜单,为菜单指定任
务。
3、自定义工具栏及在表单集中添加自定义工具栏。
9.1 在应用程序中使用菜单
9.2 创建自定义工具栏
退 出
小 结
返 回
2010-5-20 Visual FoxPro 6.0程序设计 2
9.1 在应用程序中使用菜单
9.1.1 创建菜单系统
9.1.2 规划菜单系统
9.1.3 创建菜单
9.1.4 在应用程序中包含菜单
9.1.5 为菜单系统指定任务
退 出
2010-5-20 Visual FoxPro 6.0程序设计 3
9.1.1 创建菜单系统
用户在查找信息之前,首先看到的便是菜单。如果把菜单设
计得很好,那么只要根据菜单的组织形式和内容,用户就可以
很好地理解应用程序。为此,VFP提供了“菜单设计器”,可以
用来创建菜单,提高应用程序的质量。
创建菜单系统的大量工
作是在“菜单设计器”中
完成。
在项目管理器中选择
“其他”选项卡,从中选
择“菜单”,然后单击
“新建”打开“新建菜单”
对话框。 选择“菜单”,打开
“菜单设计器”。
2010-5-20 Visual FoxPro 6.0程序设计 4
创建一个菜单系统包括若干步骤。不管应用程序的规模多大,
打算使用的菜单多么复杂,创建菜单系统都需以下步骤:
第 1步、规划与设计系统:确定需要哪些菜单、出现在界面的
何处以及哪几个菜单要有子菜单等等。有关规划菜单系统的详细
内容,请参阅本章稍后的规划菜单系统。
第 2步、创建菜单和子菜单:使用菜单设计器可以定义菜单标题、
菜单项和子菜单。
第 3步、按实际要求为菜单系统指定任务:指定菜单所要执行的
任务,例如显示表单或对话框等。另外,如果需要,还可以包含
初始化代码和清理代码。初始化代码在定义菜单系统之前执行,
其中可以打开文件;声明变量;或将菜单系统保存到堆栈中,以
便可以在后面的程序执行中恢复。清理代码中包含的代码在菜单
的定义代码之后执行,使菜单和菜单项可用或不可用。
第 4步、生成菜单程序。
第 5步、运行生成的程序,测试菜单系统。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 5
9.1.2 规划菜单系统
应用程序的实用性一定程度上取决于菜单系统的质量。花费一
定时间规划菜单,有助于用户接受这些菜单,同时也有助于用
户对这些菜单的学习。设计菜单系统时,要考虑下列准则:
以建立 Gxglxt菜单为例说明规划菜单系统的准则:
1、按照用户所要执行的任务组织系统,而不要按应用程序的层
次组织系统。只要查看菜单和菜单项,用户就应该可以对应用
程序的组织方法有一个感性认识。因此,要设计好这些菜单和
菜单项,必须清楚用户思考问题的方法和完成任务的方法。
根据简单的 Gxglxt项目的基本任务,可以将所建立的菜单系统分
为和系统有关的操作(如操作员注册、添加、删除操作员、退
出系统等);与数据输入有关的操作(如添加新系、添加新班
级、添加新专业、添加新课程等、学生注册、成绩录入);与
数据输出有关的操作(如学生情况报表、学生成绩报表);与
信息查询有关的操作(如系查询、班级查询、专业查询、课程
查询、学生查询等);最后是帮助。
2010-5-20 Visual FoxPro 6.0程序设计 6
2、给每个菜单一个有意义的菜单标题。
第一个菜单笺命令名为 【 系统管理 】, 其中包括菜单项 【 操作
员注册 】, 【 添加操作员 】, 【 删除操作员 】, 【 退出 】 ;第
二个菜单笺命令名为 【 输入数据 】, 其中包括菜单项 【 添加新
系 】, 【 添加新班级 】, 【 添加新专业 】, 【 添加新课程 】,
【 学生注册 】, 【 成绩录入 】 ;第三个菜单笺命名为 【 报表 】,
其中包括 【 学生情况报表 】, 【 打印学生成绩 】 ;第四个菜单
笺命名为 【 查询 】, 其中包括 【 系查询 】, 【 班级查询 】,
【 专业查询 】, 【 课程查询 】, 【 学生查询 】 ;第五个菜单笺
命名为 【 帮助 】, 其中只包含 【 关于 】 菜单项 。
3、按照估计的菜单项使用频率、逻辑顺序或字母顺序组织菜单
项。如果不能预计频率,也无法确定逻辑顺序,则可以按字母
顺序组织菜单项。当菜单中包含有八个以上的菜单项时,按字
母顺序特别有效。太多的菜单项需要用户花费一定的时间才能
浏览一遍,而按字母顺序则便于查看菜单项。
通常是将 【 系统管理 】 放在第一位,然后才是对数据的有关操
2010-5-20 Visual FoxPro 6.0程序设计 7
作的菜单。可按 【 系统管理 】, 【 数据输入 】, 【 查询 】, 【 报
表 】, 【 帮助 】 的次序设置菜单。
4,放置分隔线:第一个菜单笺中在 【 退出 】 菜单项上设置一
条,第二个菜单笺将 【 学生注册 】, 【 成绩录入 】 菜单项与其它
菜单项分开,第三个菜单笺不设分隔线,第四个菜单笺分成三个
部分,【 系查询 】, 【 班级查询 】 为第一部分;专业查询 】,
【 课程查询 】 为第二部分; 【 学生查询 】 为第三部分,第五个菜
单笺不设分隔线。
5、将菜单上菜单项的数目限制在一个屏幕之内。
6、如果菜单项的数目超过了一屏,则应为其中的一些菜单项创
建子菜单。
7、为菜单项指定任务:
2010-5-20 Visual FoxPro 6.0程序设计 8
8、为菜单和菜单项设置访问键或键盘快捷键。
说明,【 退出 】 习惯用 Alt+E,【 帮助 】 习惯用 Alt+H,【 关于 】
习惯用 Alt+A作为访问键,其它可任意设定,但最好是使用 Ctrl+
或 Alt+和能代表菜单项功能的某一个特殊的字母组合为快捷键,
快捷键的定义在一个菜单中不要有重复。
9、使用能够准确描述菜单项的文字。描述菜单项时,要使用日
常用语而不要使用计算机术语。同时,说明选择一个菜单项产生
的效果时,应使用简单、生动的动词,而不要将名词当作动词使
用,另外,要用相似语句结构说明菜单项。
10、在菜单项中混合使用大小写字母。 返 回
2010-5-20 Visual FoxPro 6.0程序设计 9
9.1.3 创建菜单
规划好菜单系统之后,就可以使用菜单设计器创建该系统了。
这时,可以创建菜单、快捷菜单、菜单项、子菜单和菜单项组
之间的分隔线等等。
1、创建菜单
按前述方法打开“菜单设计器”。
“菜单设计器”中选项说明:
“菜单名称”:在菜单系统中指定菜单标题和菜单项的名称。
2010-5-20 Visual FoxPro 6.0程序设计 10
“结果”:指定在选择菜单标题或菜单项时发生的动作。例如,
可执行一个命令,打开一个子菜单或运行一个过程。
“创建”:在“结果”项中选择“子菜单”或“过程”时,用于
指定菜单标题或菜单项的子菜单或过程。
“编辑”:在创建了“子菜单”或“过程”后,可以更改与菜单
标题或菜单项相关的子菜单或过程。
“选项”:显示“提示选项”对话框,可以在其中定义键盘快捷
键和其它菜单选择。
“菜单级”:弹出下拉菜单,让用户选择要处理的菜单或子菜单。
“预览”:显示正在创建的菜单的预览结果。
“插入”:在“菜单设计器”窗口中插入新的一行。
“插入栏”:显示“插入系统菜单条”对话框,使用户可以插入
标准的 VFP菜单项。
“删除”:从“菜单设计器”中删除当前菜单行。
利用菜单设计器窗口各个选项就可以设计完整的菜单。
2010-5-20 Visual FoxPro 6.0程序设计 11
1、创建 Gxglxt菜单
1、创建 【 系统 】
管理菜单笺 系统管理 (\<S)
创建 【 数据输入 】
菜单笺
数据输入 (\<I)
创建 【 报表 】 菜
单笺
报表 (\<R)
创建 【 查询 】 菜
单笺
查询 (\<Q)
创建 【 帮助 】 菜单笺
帮助 (\<H)
2、创建 【 系统管理 】 的子菜单:选择 【 系统管理 】
单击 【 创建 】 创建 【 操作员注册 】 菜单项
操作员注册
单击 【 选项 】 按钮设置快捷键
在光标置于此栏后按下要
定义的快捷键 Ctrl+O
单击 【 确定 】,提示选项”对话

2010-5-20 Visual FoxPro 6.0程序设计 12
按相同的方法
创建 【 添加操
作员 】, 【 删
除操作员 】,
【 退出 】 三个
菜单项。
在指定的菜单项( 【 删除操作员 】 与 【 退出 】 菜单项之间)中添加分隔线:
选中下面的菜单项 【 退出 】 后单击 【 插入 】 按钮。
删除“新菜单项”几个字后输入,\-”
【 系统管理 】 菜单笺定义后,单击“菜单级”下拉选择框,从中选择“菜单栏”。
按创建子菜单的方法创建其他菜单笺下的菜单项(子菜单),过程略。
2010-5-20 Visual FoxPro 6.0程序设计 13
3、为菜单项指定任务
子菜单创建后,
此处的“创建”
将变为“编辑”。
单击 【 编辑 】
单击“结果”下
拉选择框,从中
选择“命令”。在此框中输入该菜单
项应执行的命令,Do
Form Forms\operator 说明:表单按,上机指导, 中
的定义,使用同
样的方法为另三
个菜单项指定任
务。
【 系统管理 】 菜单笺中各菜单项的任务指定完成后,单击“菜单级”下拉选
择框,从中选择“菜单栏”。
按相同的方法分别为 【 数据输入 】, 【 报表 】, 【 查询 】, 【 帮助 】 的子
菜单中各菜单项指定任务。
菜单设计完成后,选择系统菜单上的 【 菜单 】 |【 生成 】,生成,MPR文件。
2010-5-20 Visual FoxPro 6.0程序设计 14
生成 gxglxt.mpr文件后,便可以在项目管理器中运行该文件:在项
目管理器中选择“其他”选项卡,然后从“菜单”中选择
,gxglxt”,再单击 【 运行 】 。运行的结果格式如下:
各子菜单格式如下:
最后的一项 【 项目 】 并不是我们所定义的共单笺。因为我们是在“项目管理
器”中运行的 gxglxt.mpr文件,项目管理器没有关闭才有 【 项目 】 这一项。如
果在菜单运行后将“项目管理器”关闭,则这一项将会变为 【 格式 】 。在应用
程序中将菜单连编后脱离 VFP运行时,就不会有这一项。
2010-5-20 Visual FoxPro 6.0程序设计 15
2、通过修改快速菜单得到自户自定义菜单
若要从已有的 VFP菜单系统开始创建菜单,则可以使用“快速
菜单”功能。若要用“快速菜单”创建菜单系统,可以按下列步
骤进行:
打开“菜单设计器”,然后从系统菜单上的 【 菜单 】 中选择
【 快速菜单 】 。
在“快速菜单”中通过 【 插入 】, 【 删除 】 或修改得到所要求
的菜单格式。
2010-5-20 Visual FoxPro 6.0程序设计 16
例如,如果要在“帮助”菜单前插入“客户”菜单,可以选择
与“帮助”菜单行,再选择“插入”按钮,然后在“菜单名称”
栏中键入“客户”,其结果如图 。




注意:拖动移动按钮可以改变菜单栏上各菜单的位置。
如果需要“帮助”菜单,应将它安排在菜单栏上的最后,这样
用户能够很快找到它。
在应用程序中使用菜单之前,必须将它生成。
2010-5-20 Visual FoxPro 6.0程序设计 17
3、创建快捷菜单
在 VFP6或者在 Windows中, 选定某个控件或对象后单击右键时,
就会显示快捷菜单, 可以快速展示对当前对象进行操作的各种可
用的功能 。 正是因为这种菜单的方便快捷, 它才被称为快捷菜单 。
可用 VFP创建快捷菜单, 并将这些菜单附加在控件中 。
若要创建快捷菜单 。 可从, 项目管理器, 中选择 【 其他 】 选项卡,
选择, 菜单,, 并选定 【 新建 】 。 接下来选择 【 快捷菜单 】, 则
出现, 快捷菜单设计器, 。
进入“快捷
菜单设计器”
后,添加菜单
项的过程与创
建菜单完全相
同。
2010-5-20 Visual FoxPro 6.0程序设计 18
例如,创建一个包含有二个选项 【 运行表单 】 和 【 关闭 】 的快
捷菜单。浏览命令的代码是 DO FORM?,在关闭菜单定义时,
“结果”栏中选择“菜单项 #”,在“结果”栏后的栏中输入
,_mfi_close”,表示调用系统菜单中的“关闭”功能。创建完成
后,将生成一个菜单名为 Myquickmenu.mpr,其中 Myquickmenu
是自己命名的菜单文件名。所创建的菜单结果如图
然后在系统菜单中选择 【 菜单 】 |【 生成 】,生成 QuickMenu.mpr。
最后在“属性示例”表
单的 RightClick Event方法
程序中添加下行代码:
Do Menus\QuickMenu.mpr
返 回
2010-5-20 Visual FoxPro 6.0程序设计 19
9.1.4 在应用程序中包含菜单
创建了菜单系统后,可将其包含在应用程序中。若要在应用程
序中包含菜单,可将,mnx文件添加到项目中,并由项目建立应
用程序。
创建并生成了快捷菜单以后,就可将其附加到控件中。当用户
在控件上单击鼠标右键时,显示典型的快捷菜单。在控件的 Rig-
htClick(单击鼠标右键)事件中输入少量代码,即可将快捷菜单
附加到特定的控件中。
先选择要附加快捷菜单的控件,然后在“属性”窗口中选择
“方法程序”选项卡并选择,RightClick Event”最后在代码窗口
中键入 Do menu.mpr,其中 menu是快捷菜单的文件名。
注意:引用快捷菜单时,必须使用,mpr扩展名。
如在上一节中,在“属性示例”表单的 RightClick Event事件代
码中添加代码 DO Menus\Quickmenu.mpr。
2010-5-20 Visual FoxPro 6.0程序设计 20
如果想将此快捷菜单应用于所有新创建的表单,则可以修改表
单的类定义。步骤如下:
( 1)打开“项目管理器”并选择“类”选项卡。
( 2)选择 【 添加 】,将 C:\Program Files\Microsoft Visual Studio\Vfp98\
Wizar-ds\Wizembss.vcx添加到“类”中。
单击 【 确定 】
( 3)单击 Wizembss
类前的,+”号,再选
择 Embossedform子类
( 4)选择“项目管
理器”上的 【 修改 】
按钮,打开“类设计
器” ( 5)选择“属性”
对话框中的“方法程序”
选项卡,再选定
RightClick Event事件。
( 6)双击 RightClick
Event,打开方法程序代
码编辑窗口,在该窗口
中输入命令,
DO MENUS\QUICKMENU.MPR
2010-5-20 Visual FoxPro 6.0程序设计 21
( 7)关闭“方法程序”编辑窗口,关闭“类设计器”窗口,将所做的修改
保存到 Embossedform子类中。
说明,Embossedform子类是建立
表单的类 ( Class), 以后所建的
表单均含有单击右键时调用
Myquickmeun菜单的功能 。
若要将 SDI菜单附加到表单中可
在创建了 SDI菜单后, 将其附加
到 SDI表单中, 其步骤如下:
( 1) 在, 表单设计器, 中, 将
表单的 Show Window属性设置为
,2-作为顶层表单, 。
( 2)在表单的 Init事件中调用该菜单。例如,假设菜单名为 Quickmenu.mpr,
添加此代码:
DO Quickmenu.mpr WITH THIS,.T.
返 回
2010-5-20 Visual FoxPro 6.0程序设计 22
9.1.5 为菜单系统指定任务
在创建菜单系统时,需要考虑系统访问的简便性,也必须为系
统指定任务。必须为菜单和菜单项指定所执行的任务,如显示
表单、工具栏以及其他的菜单系统。
用户应该定义可以访问菜单系统的访问键,还可以添加键盘快
捷键,并且控制菜单何时可用。
1、指定访问键
设计良好的菜单都具有访问键,从而通过键盘可以快速地访问
菜单的功能。在菜单标题或菜单项中,访问键用带有下划线的
字母表示。例如,VFP的 【 文件 】 菜单使用,F”作为访问键。
如果没有为某个菜单标题或菜单项指定访问键,VFP将自动指定
第一个字母作为访问键。例如,假定没有给创建的,EDIT”菜单
定义访问键,VFP将指定第一个字母( E)作为它的访问键。
若要为菜单或菜单项指定访问键,可在希望成为访问键的字母
左侧键入,\<”。例如,要在,EDIT”菜单标题中设置,I”作为访
问键,可在“菜单名称”栏中将,EDIT”替换为,ED\<IT”或
,EDIT\<I”。
2010-5-20 Visual FoxPro 6.0程序设计 23
2、指定键盘快捷键
除了指定访问键以外,还可以为菜单或菜单项指定键盘快捷键。
和使用访问键一样,使用键盘快捷键是让用户在按下某个键的同
时,再按另一个键而选择菜单或菜单项。访问键与键盘快捷键的
区别是:使用快捷键可以在不显示菜单的情况下选择此菜单中的
一个菜单项。
VFP菜单项的快捷键一般用 Ctrl或 Alt键与另一个键相组合。例如,
按 Ctrl+N可在 VFP中创建新文件。
若要为菜单或菜单项指定快捷键,可以先在“菜单名称”栏中,
选择相应的菜单标题或菜单项,再选择“选项”栏中的按钮,显
示“提示选项”对话框,如图 9-9所示。
然后在“键标签”框中,按下一组合键,可创建快捷键,如果一
个菜单项没有快捷键,VFP将在“键标签”框中显示“按下要定
义的键”,最后在“键说明”框中,添加希望在菜单项的旁边出
现的文本。
注意,Ctrl+J是无效的快捷键,因为在 VFP中,经常将其作为关闭
某些对话框的快捷键。
2010-5-20 Visual FoxPro 6.0程序设计 24
3、启用和废止菜单项
可以根据逻辑条件启用或废止菜单及菜单项。设 Gxglxt菜单中各
项启用和废止条件如下表
说明,czyqx为在菜单运行前所赋值的一个字符型内存变量,在, 上机指导,
中是在 Operator表单中赋的值。
菜单的启用或废止是根据所给条件计算得到, 当条件为,T.时即将菜单笺或菜
单项废止, 如不给条件, 默认为,F.,即启用 。 如果菜单笺废止, 那么菜单笺
中的所有菜单项均废止 。 如, 系统管理, 菜单笺下的, 操作员注册, 没有设
置条件, 即它按该菜单笺的条件执行 。
2010-5-20 Visual FoxPro 6.0程序设计 25
菜单启用和废止的设置方法:
①在“菜单设计器”的“菜单名称”栏中,选择相应的菜单标题或菜单项。
如“系统管理”菜单笺中的“操作员注册”共单项 。
② 单击“选项”按钮,显示“提
示选项”对话框。
③ 选择“跳过”按钮,打开“表达
式生成器”或直接在“跳过”文本
框中输入条件表达式。
UPPER(CZYQX)>"A"
④ 单击 【 确定 】 按钮返
回到“菜单设计器”
返回到“菜单设计器”后,可用同样的方法设置其他菜单项启用或废止。
2010-5-20 Visual FoxPro 6.0程序设计 26
4、输入过程或程序
如:在 Gxglxt菜单的 【 查询 】 菜单笺中所有的菜单项均调用同
一个表单查询界面(表单中的数据源来自系统当前工作区中的
表),不同处是对不同的查询菜单项使用不同的表。由于使用同
一表单界面,为菜单项指定任务时可以通过调用过程完成。
打开“菜单设计器”,进入到 【 查询 】 菜单笺中,如图:
将 【 查询 】
菜单笺中的所
有菜单项的
“结果”设置
为“过程”。
方法同前。然
后选择 【 系查
询 】,单击
【 创建 】 按钮。
在“系查询” -过程编辑窗口中输入过程代码:
PUBLIC NWORKAREA,LUSEED
NWORKAREA=SELECT(0)
LUSEED=.T.
IF !USED("DEPARTMENT")
LUSED=.F.
SELECT 0
USE DATA\DEPARTMENT
ENDIF
SELECT DEPARTMENT
DO FORM FORMS\DATAQUERY
然后关闭“过程”编辑窗口。
返回“菜单设计器”后,使用同样的方法为其他菜单项编辑过程。
共用的查
询表单名
2010-5-20 Visual FoxPro 6.0程序设计 27
可以为菜单或菜单项指定一个过程,指定过程的方式取决于菜
单或菜单项是否有子菜单。若要为不含有子菜单的菜单或菜单
项指定过程,可以在“菜单名称”栏中,选择相应的菜单标题
或菜单项,再在“结果”框中选择“过程”,“创建”按钮出
现在列表的右侧。如果先前已定义了一个过程,则这里出现的
是“编辑”按钮,再选择“创建”或“编辑”,在窗口中键入
正确的代码。
由于 VFP会自动地生成 PROCEDURE语句,因而不必在过程编辑
窗口中键入此语句,只有在清理代码中才需要 PROCEDURE语
句。
为含有子菜单的菜单或菜单项指定过程的步骤如下:
( 1)请在“菜单级”框中,选择包含相应菜单或菜单项的菜单
级。
( 2)从系统菜单中选择 【 显示 】 |【 菜单选项 】 。
( 3)可以用下列方法之一指定一个过程:在“过程”框中编写
或调用过程,或者选择“编辑”,然后再选择“确定”,打开
独立的编辑窗口并编写或调用过程。
2010-5-20 Visual FoxPro 6.0程序设计 28
5、向菜单系统添加初始化代码和清理代码
向菜单系统添加初始化代码可以定制菜单系统,初始化代码可以
包含创建环境的代码、定义变量的代码、打开所需文件的代码,
以及使用 PUSH MENU和 POP MENU保存或恢复菜单系统的代码。
向菜单系统中添加初始化代码,可以从系统菜单中选择 【 显示 】
|【 常规选项 】,在“菜单代码”区域,选择“设置”,然后再
选择 【 确定 】,再在初始化代码窗口中,键入适当的初始化代码。
向菜单系统添加清理代码可以减小菜单系统的大小。清理代码常
包含一些代码,在初始时启用或废止菜单系统中的菜单或菜单项。
在生成并运行菜单程序时,初始化代码及菜单定义代码在清理代
码之前执行。向菜单系统中添加清理代码,可以从系统菜单中选
择 【 显示 】 |【 常规选项 】,在“菜单代码”区域,选择“清
理”,然后再选择 【 确定 】,再在清理代码窗口中,键入适当的
清理代码。关闭“菜单设计器”时,同时保存所做的变更。
注意:如果设计的菜单是应用程序的主菜单,则应该在清理代码
中包含 READ EVENTS命令,并为退出菜单系统的菜单命令指定
一个 CLEAR命令。这可以防止应用程序的运行过早地中断。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 29
9.2 创建自定义工具栏
9.2.1 定义工具栏类
9.2.2 在表单集中添加自定义工具栏
退 出返 回
如果应用程序中包含一些用户经常重复执行的任务,那么可
以添加相应的自定义工具栏,简化操作,加速任务的执行。
下面各节介绍的是为应用程序创建自定义工具栏的方法。
2010-5-20 Visual FoxPro 6.0程序设计 30
9.2.1 定义工具栏类
如果要创建一个工具栏,要它包含己有工具栏所没有的按钮,
则可通过定义一个自定义工具栏类完成此任务。 VFP提供了一
个工具栏基类,在此基础上可以创建所需的类。创建新类的方
法在 5.4.5类的操作方法中已作详细的讲解。
定义了工具栏类以后,可向工具栏类添加对象,并为自定义工
具栏定义属性、事件和方法程序,最后可将工具栏添加到表单
集中。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 31
9.2.2 在表单集中添加自定义工具栏
在定义一个工具栏类之后,便可以用这个类创建一个工具栏。
可以用“表单设计器”或者用编写代码的方法,将工具栏与表
单对应起来。
1、在“表单设计器”中协调工具栏和表单
可以在表单集中添加工具栏,让工具栏与表单集中的各个表单
一起打开。但不能直接在某个表单中添加工具栏。使用“表单
设计器”在表单集中添加工具栏的步骤如下:
( 1)先注册并选定包含工具栏类的类库。
( 2)打开要使用上述工具栏类的表单集,再从“表单控件”工
具栏选择“查看类”,然后从显示的列表中选择该工具栏类。
( 3)从“表单控件”工具栏中选择工具栏类。
( 4)在“表单设计器”中单击,添加此工具栏,然后将工具栏
拖动到适当的位置,VFP将在表单集上添加工具栏,如果表单集
尚未打开,VFP将提示用户打开一个。
( 5)为工具栏及其按钮定义操作。
2010-5-20 Visual FoxPro 6.0程序设计 32
2、使用代码协调工具栏和表单
除了使用“表单设计器”外,还可以使用代码在表单集中添
加工具栏。如果要使用代码在表单集中添加工具栏,可以在表
单集的 Init事件中,使用 SET CLASSLB命令,指定包含工具栏
类的类库,然后在表单集中由此类创建工具栏。
例如,要添加并显示基于 _base类库中 _toolbar类的工具栏
mytoolbar,可以在表单集的 Init事件中添加下列代码:
SET CLASSLIB TO LIBS\_BASE
THIS.ADDOBJECT("MYTOOLBAR","_TOOLBAR")
THIS.MYTOOLBAR.SHOW
如果使用已经定义了的一个工具栏,如在第五章中定义的
NEWTOOLBAR工具栏,则可以在表单集的 Init事件添加如下代
码:
SET CLASSLIB TO LIBS\NEWTOOLBAR ADDITIVE
THIS.ADDOBJECT("MYTOOLBAR","NEWTOOLBAR")
THIS.MYTOOLBAR.SHOW
注意,如果工具栏类没有定义工具栏及其按钮要执行的操作,那么必须在
与工具栏及其按钮相关的事件过程中定义操作。
2010-5-20 Visual FoxPro 6.0程序设计 33
3、创建自定义工具栏示例
可以在代码中定义工具栏的各个要素。例如,在第五章中定义
的 NEWTOOLBAR工具栏没有指定工具栏及其按钮等要执行的
操作,现以该工具栏添加到表单集为例,说明其方法。先在表
单集的 Init事件中添加下列代码,当加载表单集时,VFP将创建
并显示代码中定义的工具栏,该工具栏如图:
SET CLASSLIB TO LIBS\NEWTOOLBAR ADDITIVE
THIS.ADDOBJECT("MYTOOLBAR","NEWTOOLBAR")
THIS.MYTOOLBAR.SHOW
对 NEWTOOLBAR工具栏中各控件的执行代码定义的步骤及
代码如下:
( 1)选择“项目管理器”中的“类”选项卡。
( 2)找到并选择以前定义的 NEWTOOLBAR类。
( 3)单击“项目管理器”的 【 修改 】 按钮。
2010-5-20 Visual FoxPro 6.0程序设计 34
( 4)分控件进行代码设计。
■对 Combo1组合框的代码进行定义:
●选择 Combo1控件,在“属性”中选择“其它”选项卡,将
Enabled属性设为“假” 。(在表单集中不设文章排版)。
■对 Combo2组合框的代码进行定义:
● 选择 Combo2控件, 在, 属性, 中选择, 数据, 选项卡, 将
RowSourceType属性设为, 1-值,, 将 RowSource属性设为 宋体,
黑体,仿宋,楷体 ( 还可以添加其它 VFP能识别的字体名 ) 。 设置初
始值, 将 Value属性设为 ="宋体 "。
● 选择, 方法程序, 选项卡, 双击 Click Event,在弹出的代码编
辑框中写入如下代码:
THISFORMSET.ActiveForm.ActiveControl.FontName=THIS.VALUE
2010-5-20 Visual FoxPro 6.0程序设计 35
■ 对 Combo3组合框的代码进行定义:
●在上一步的方法程序编辑框中,从“对象”后的组合框中选择
Combo3,然后在 Click Event方法程序编辑框中输入如下的代码:
THISFORMSET.ActiveForm.ActiveControl.FontSize=;
VAL(ALLTRIM(THIS.VALUE))
● 在“属性”中的对象选择框中选择 Combo3对象,再选择“数
据”选项卡,将 RowSourceType属性设为,1-值”,将 RowSource
属性设为 8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72。设置初始
值,将 Value属性设为 ="9"。
■对 Command1命令按钮的代码进行定义:
在上一步的方法程序编辑框中,从“对象”后的组合框中选择
Command1对象,然后在 Click Event方法程序编辑框中输入如下
的代码:
THISFORMSET.ActiveForm.ActiveControl.FontBold=;
!THISFORMSET.ActiveForm.ActiveControl.FontBold
THIS.FontBold=THISFORMSET.ActiveForm.ActiveControl.FontBold
■ 对 Command2命令按钮的代码进行定义:
2010-5-20 Visual FoxPro 6.0程序设计 36
在上一步的方法程序编辑框中,从“对象”后的组合框中选择
Command2对象,然后在 Click Event方法程序编辑框中输入如下
的代码:
THISFORMSET.ActiveForm.ActiveControl.FontItalic=;
!THISFORMSET.ActiveForm.ActiveControl.FontItalic
THIS.FontItalic=THISFORMSET.ActiveForm.ActiveControl.FontItalic
■ 对 Command3命令按钮的代码进行定义:
在上一步的方法程序编辑框中, 从, 对象, 后的组合框中选择
Command3对象, 然后在 Click Event方法程序编辑框中输入如下
的代码:
THISFORMSET.ActiveForm.ActiveControl.FontUnderline=;
!THISFORMSET.ActiveForm.ActiveControl.FontUnderline
THIS.FontUnderline=THISFORMSET.ActiveForm.ActiveControl.FontUnderline
到此, 对类设计定义完成, 可关闭, 方法程序编辑框,, 关闭
,类设计器, 并将所做修改保存 。
2010-5-20 Visual FoxPro 6.0程序设计 37
将该工具栏加入到 Student表单集运行后,选择表单上的“说明”
后面的编辑框对象,进行图中工具栏状态设置后(黑体,12磅字
号、粗斜体、加下划线)的结果:
返 回
2010-5-20 Visual FoxPro 6.0程序设计 38
小 结
1、进行菜单系统设计前应先做好规划:
①按要执行的任务组织系统:即菜单系统中要设计哪几个菜单笺以及菜单笺
在菜单系统中的顺序;
②每个菜单笺中应设置的菜单项以及菜单项的先后顺序,菜单项是否分组;
③菜单笺以及菜单项的中文名,访问键和键盘快捷键设置和定义;
④为菜单项指定任务,可以使用命令、菜单项、过程等;
⑤设置菜单的启用和废止条件以及菜单的说明信息。
2、使用“菜单设计器”根据所规划的菜单系统定义菜单系统:
①先设计菜单笺(包含中文名、先后顺序、访问键、启用及废止条件等);
②再设计菜单项(包含中文名、先后顺序、分隔线、快捷键、启用及废止条
件、菜单项信息、菜单项应执行的任务等)。
3、使用“快捷菜单设计器”设计快捷菜单并在表单中包含快捷菜单或者在表
单类中包含调用快捷菜单的命令。
4、使用“快速菜 单”设计系统菜单。
5、菜单设计完成后要生成菜单文件(,mpr文件)。
6、自定义工具栏,并在表单集中通过注册类的方法或在表单集的 Init事件中
使用命令的方法添加自定义工具栏。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 39