第九章菜单和自定义工具栏
( 1) 进行菜单系统的规划
( 2) 利用菜单生成器进行设计,建立菜单文件,
扩展名为,mnx
( 3)利用菜单文件,生成菜单程序代码文件,
扩展名为,mpr
菜单的设计的步骤:
9.1 利用菜单设计器生成菜单
9.1.1 打开菜单设计器的三种方法:
( 1) 使用文件菜单的新建命令,在文件类型中选择菜单
( 2) 利用项目管理器,选择其中的其他选项 。
( 3) 使用命令 CREATE MENU [菜单名 ]
&& 可以省略菜单的扩展名选择建立菜单后,我们将看到如图 9-1的对话框,选择菜单
VFP主菜单的变化:菜单、显示
9.1.2 菜单设计器各项参数的设置我们以图为例说明菜单设计器的使用菜单设计器分为四个部分:
( 1) 左边是一个菜单定义的列表框
( 2) 右上角为多层菜单的菜单级
( 3) 右边中间一组命令按钮用来进行菜单项的插入或删除
( 4) 最下边预览按钮,可以在设计时预览菜单的显示若要将某字母定义为热键,可用,\<”加上该字母,如上面我们为学籍管理设置热键 J,可在学籍管理后面加上,\<J”
也可以在两边加上括号,使菜单看起来更美观 。
也可以将菜单项进行分组,如将录入、查询、统计为一组
,可在该分组的地方输入一个菜单项,名称为,\-”即可。
菜单名称,用来输入菜单项的名称或者下拉菜单选项的名称。
注意:作为显示用结果,用来设计对应菜单项激活后的操作,菜单对应的操作有四种。
选项 功能命令 为菜单项定义一条命令,激活该菜单项就会转向执行相应命令,这时只需直接在右边的文本框内输入该命令 。
填充名称或者菜单项 #:
用于定义主菜单的菜单名或子菜单的菜单项序号,( 我们在菜单名称中定义的并不是程序中调用菜单项时使用的名字,而是菜单显示的名称 ),但我们可以不定义,系统会自动指定它们的名称,也可以通过选项指定子菜单用来为一个菜单项定义相关的子菜单,选择子菜单作为结果,旁边就会出现一个,创建,或,编辑,的命令按钮,单击该按钮就又出现一个类似的菜单设计器对话框,只是菜单级为产生该下拉菜单的菜单项的名字,
过程 该选项为菜单项定义一个过程选项,单击菜单设计器主设计区上的选项按钮,就会出现如下图所示的提示选项的对话框选项 功能快捷方式设置快捷键 ( 与热键不同,快捷键是可以在菜单没有激活的情况下通过快捷键执行相应的菜单选项 ) 。 在键标签中同时键入设置为快捷键的键组合,通常是将单键与 CTRL组合,如上图所示同时按下
CTRL+C即可 。
位置 指定当用户在应用程序中编辑 OLE对象时,菜单项所在的位置跳过用来设置菜单或菜单项跳过 ( 灰色的不可用状态 ) 条件,用户可以在这里输入一个表达式来表示条件,菜单运行的时候,若表达式值为,T.时,菜单项就呈灰色,表示不可用 。
主菜单名 可以在此给菜单项指定在菜单程序中调用时的名字信息 用来输入出现在状态栏上的菜单提示信息,帮助用户了解菜单项的用途 。
备注 用来输入开发者的一些说明信息,这部分信息不会影响程序的运行,
只是注释 。
9.1.3 生成菜单程序利用菜单设计器生成的是用户自定义菜单的相关参数文件(,MNX),若要执行菜单必须生成菜单的程序文件 (.MPR)。
单击 VFP菜单栏上的“菜单”选项,再选择“生成
…”,特别注意:每次打开菜单设计器修改已经存在的菜单时,修改完后,必须再重新生成菜单程序。
9.1.4 执行自定义菜单执行一个菜单程序可利用如下三种方法:
( 1)单击菜单栏上的程序选项,选择运行,然后找到要运行的菜单程序文件名即可
( 2)利用项目管理器,找到菜单,单击运行命令按钮即可
( 3)利用命令 DO <菜单名 > &&扩展名,MPR不能省略菜单运行后,就会替代 VFP系统菜单栏,可以用
SET SYSMENU TO DEFAULT 回到系统菜单
9.1.5 编辑已经存在的菜单编辑菜单对应的命令是:
MODIFY MENU <菜单名 >
&&可以省略扩展名编辑菜单程序文件的命令是:
MODIFY COMMAND <菜单程序文件名 >
&&不可以省略扩展名 (.MPR)
请注意,如果是用菜单设计器生成的菜单最好打开菜单设计器进行修改,修改完后,再重新生成菜单程序文件 。
( 1)快速菜单我们可以建立一个类似系统菜单栏的菜单,而这个操作非常简单,首先我们选择新建菜单进入菜单设计器,然后我们只需要在 VFP菜单栏上单击,菜单,,然后选择 快速菜单 即可,
这时候系统菜单的选项就立刻填充了这个新菜单
9.1.5 快速菜单及插入系统菜单项
( 2) 在用户自定义菜单的子菜单中插入 VFP系统的菜单项将 VFP的系统菜单中的某些选项直接插入到我们自己的子菜单,这个功能可以通过菜单设计器的右边的,插入栏” 命令按钮完成。
( 3) 在系统菜单中插入用户自定义的菜单可以在菜单运行时,直接将自己定义的菜单栏插入显示到系统菜单中 。 只需要在菜单的定义过程中,通过,显示,菜单,选择,常规选项,,可以选择将菜单追加到整个系统菜单的后面,或者指定追加在某个菜单项的前面或后面过程:针对整个菜单有效设置:在菜单定义之前执行清理:在菜单定义的后面,在为菜单项定义的过程前面选择新建快捷菜单,打开菜单设计器,快捷菜单的设计器界面与操作方法与前面所讲基本相同,但在菜单级显示的是,快捷菜单,,用与前面相同的步骤设计好快捷菜单,然后生成此相应的菜单程序 。
将快捷菜单用 RIGHTCLICK事件链接到我们的操作对象中。
选择需要附加快捷菜单的对象(表单,文本框等等)?
打开代码窗口,选择 RIGHTCLICK事件?在代码窗口中输入 DO 快捷菜单名,MPR 即可。
9.2.2 快捷菜单
9.2 快捷菜单与表单菜单
9.2.2 表单菜单将自定义菜单添加到表单上,必须通过以下三步:
( 1)在菜单打开的状态下,选择菜单“显示”,然后选择“
常规选项”(如图 9-7所示,选择),选择右下脚的“顶层表单”复选框,然后生成菜单程序。
( 2)打开表单,将表单的 ShowWindow 属性设置为 2-作为顶层表单。
( 3)在表单的 INIT事件中,用如下命令格式运行菜单程序
DO 菜单程序名 WITH THIS,.T.
菜单程序名必须要加扩展名,MPR
9.3 菜单项的禁用
l 打开菜单进入编辑状态。
l 单击系统的“显示”菜单,然后选择“常规选项”,选择“
设置”复选框,然后单击确定命令按钮,进入设置的过程代码编写;
l在设置的过程代码中进行变量的声明:
PUBLIC TJ &&声明一个全局变量,名为 TJ
TJ=.F,&&初始状态为,F.表示可用
l 在菜单名称中沿着菜单级别找到要被禁止的菜单项,如本例为成绩管理的统计选项,单击“选项”打开提示选项对话框;
l 在跳过文本框中输入,TJ &&表示用 TJ变量作为控制统计选项联系的表达式
l 在菜单设计器,选择录入菜单选项,然后将结果设为过程
,输入:
TJ=.T.
DO FORM CJLU
9.4 自定义工具栏
在,文件,菜单中选择,新建,命令,
在,项目管理器,中,选择类选项卡,单击,新建,按钮;
利用 CREATE CLASS命令。
VFP提供的工具栏基类,或单击旁边的三点命令按钮选择其他工具栏类;在“存储于”框中键一个新的类库名,或在下拉组合框中选择一个已有的库,一个类库中可以存放多个类,单击“确定”后进入类设计器,如图所示
( 1) 进行菜单系统的规划
( 2) 利用菜单生成器进行设计,建立菜单文件,
扩展名为,mnx
( 3)利用菜单文件,生成菜单程序代码文件,
扩展名为,mpr
菜单的设计的步骤:
9.1 利用菜单设计器生成菜单
9.1.1 打开菜单设计器的三种方法:
( 1) 使用文件菜单的新建命令,在文件类型中选择菜单
( 2) 利用项目管理器,选择其中的其他选项 。
( 3) 使用命令 CREATE MENU [菜单名 ]
&& 可以省略菜单的扩展名选择建立菜单后,我们将看到如图 9-1的对话框,选择菜单
VFP主菜单的变化:菜单、显示
9.1.2 菜单设计器各项参数的设置我们以图为例说明菜单设计器的使用菜单设计器分为四个部分:
( 1) 左边是一个菜单定义的列表框
( 2) 右上角为多层菜单的菜单级
( 3) 右边中间一组命令按钮用来进行菜单项的插入或删除
( 4) 最下边预览按钮,可以在设计时预览菜单的显示若要将某字母定义为热键,可用,\<”加上该字母,如上面我们为学籍管理设置热键 J,可在学籍管理后面加上,\<J”
也可以在两边加上括号,使菜单看起来更美观 。
也可以将菜单项进行分组,如将录入、查询、统计为一组
,可在该分组的地方输入一个菜单项,名称为,\-”即可。
菜单名称,用来输入菜单项的名称或者下拉菜单选项的名称。
注意:作为显示用结果,用来设计对应菜单项激活后的操作,菜单对应的操作有四种。
选项 功能命令 为菜单项定义一条命令,激活该菜单项就会转向执行相应命令,这时只需直接在右边的文本框内输入该命令 。
填充名称或者菜单项 #:
用于定义主菜单的菜单名或子菜单的菜单项序号,( 我们在菜单名称中定义的并不是程序中调用菜单项时使用的名字,而是菜单显示的名称 ),但我们可以不定义,系统会自动指定它们的名称,也可以通过选项指定子菜单用来为一个菜单项定义相关的子菜单,选择子菜单作为结果,旁边就会出现一个,创建,或,编辑,的命令按钮,单击该按钮就又出现一个类似的菜单设计器对话框,只是菜单级为产生该下拉菜单的菜单项的名字,
过程 该选项为菜单项定义一个过程选项,单击菜单设计器主设计区上的选项按钮,就会出现如下图所示的提示选项的对话框选项 功能快捷方式设置快捷键 ( 与热键不同,快捷键是可以在菜单没有激活的情况下通过快捷键执行相应的菜单选项 ) 。 在键标签中同时键入设置为快捷键的键组合,通常是将单键与 CTRL组合,如上图所示同时按下
CTRL+C即可 。
位置 指定当用户在应用程序中编辑 OLE对象时,菜单项所在的位置跳过用来设置菜单或菜单项跳过 ( 灰色的不可用状态 ) 条件,用户可以在这里输入一个表达式来表示条件,菜单运行的时候,若表达式值为,T.时,菜单项就呈灰色,表示不可用 。
主菜单名 可以在此给菜单项指定在菜单程序中调用时的名字信息 用来输入出现在状态栏上的菜单提示信息,帮助用户了解菜单项的用途 。
备注 用来输入开发者的一些说明信息,这部分信息不会影响程序的运行,
只是注释 。
9.1.3 生成菜单程序利用菜单设计器生成的是用户自定义菜单的相关参数文件(,MNX),若要执行菜单必须生成菜单的程序文件 (.MPR)。
单击 VFP菜单栏上的“菜单”选项,再选择“生成
…”,特别注意:每次打开菜单设计器修改已经存在的菜单时,修改完后,必须再重新生成菜单程序。
9.1.4 执行自定义菜单执行一个菜单程序可利用如下三种方法:
( 1)单击菜单栏上的程序选项,选择运行,然后找到要运行的菜单程序文件名即可
( 2)利用项目管理器,找到菜单,单击运行命令按钮即可
( 3)利用命令 DO <菜单名 > &&扩展名,MPR不能省略菜单运行后,就会替代 VFP系统菜单栏,可以用
SET SYSMENU TO DEFAULT 回到系统菜单
9.1.5 编辑已经存在的菜单编辑菜单对应的命令是:
MODIFY MENU <菜单名 >
&&可以省略扩展名编辑菜单程序文件的命令是:
MODIFY COMMAND <菜单程序文件名 >
&&不可以省略扩展名 (.MPR)
请注意,如果是用菜单设计器生成的菜单最好打开菜单设计器进行修改,修改完后,再重新生成菜单程序文件 。
( 1)快速菜单我们可以建立一个类似系统菜单栏的菜单,而这个操作非常简单,首先我们选择新建菜单进入菜单设计器,然后我们只需要在 VFP菜单栏上单击,菜单,,然后选择 快速菜单 即可,
这时候系统菜单的选项就立刻填充了这个新菜单
9.1.5 快速菜单及插入系统菜单项
( 2) 在用户自定义菜单的子菜单中插入 VFP系统的菜单项将 VFP的系统菜单中的某些选项直接插入到我们自己的子菜单,这个功能可以通过菜单设计器的右边的,插入栏” 命令按钮完成。
( 3) 在系统菜单中插入用户自定义的菜单可以在菜单运行时,直接将自己定义的菜单栏插入显示到系统菜单中 。 只需要在菜单的定义过程中,通过,显示,菜单,选择,常规选项,,可以选择将菜单追加到整个系统菜单的后面,或者指定追加在某个菜单项的前面或后面过程:针对整个菜单有效设置:在菜单定义之前执行清理:在菜单定义的后面,在为菜单项定义的过程前面选择新建快捷菜单,打开菜单设计器,快捷菜单的设计器界面与操作方法与前面所讲基本相同,但在菜单级显示的是,快捷菜单,,用与前面相同的步骤设计好快捷菜单,然后生成此相应的菜单程序 。
将快捷菜单用 RIGHTCLICK事件链接到我们的操作对象中。
选择需要附加快捷菜单的对象(表单,文本框等等)?
打开代码窗口,选择 RIGHTCLICK事件?在代码窗口中输入 DO 快捷菜单名,MPR 即可。
9.2.2 快捷菜单
9.2 快捷菜单与表单菜单
9.2.2 表单菜单将自定义菜单添加到表单上,必须通过以下三步:
( 1)在菜单打开的状态下,选择菜单“显示”,然后选择“
常规选项”(如图 9-7所示,选择),选择右下脚的“顶层表单”复选框,然后生成菜单程序。
( 2)打开表单,将表单的 ShowWindow 属性设置为 2-作为顶层表单。
( 3)在表单的 INIT事件中,用如下命令格式运行菜单程序
DO 菜单程序名 WITH THIS,.T.
菜单程序名必须要加扩展名,MPR
9.3 菜单项的禁用
l 打开菜单进入编辑状态。
l 单击系统的“显示”菜单,然后选择“常规选项”,选择“
设置”复选框,然后单击确定命令按钮,进入设置的过程代码编写;
l在设置的过程代码中进行变量的声明:
PUBLIC TJ &&声明一个全局变量,名为 TJ
TJ=.F,&&初始状态为,F.表示可用
l 在菜单名称中沿着菜单级别找到要被禁止的菜单项,如本例为成绩管理的统计选项,单击“选项”打开提示选项对话框;
l 在跳过文本框中输入,TJ &&表示用 TJ变量作为控制统计选项联系的表达式
l 在菜单设计器,选择录入菜单选项,然后将结果设为过程
,输入:
TJ=.T.
DO FORM CJLU
9.4 自定义工具栏
在,文件,菜单中选择,新建,命令,
在,项目管理器,中,选择类选项卡,单击,新建,按钮;
利用 CREATE CLASS命令。
VFP提供的工具栏基类,或单击旁边的三点命令按钮选择其他工具栏类;在“存储于”框中键一个新的类库名,或在下拉组合框中选择一个已有的库,一个类库中可以存放多个类,单击“确定”后进入类设计器,如图所示