《菜单设计与应用.ppt》由会员分享,可在线阅读,更多相关《菜单设计与应用.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VFP课程建设组课程建设组第八章第八章 菜单设计与应用菜单设计与应用 http:/V FoxPro程序设计程序设计目录Visual FoxPro系统菜单系统菜单 1菜单设计菜单设计 2快捷菜单设计快捷菜单设计 3http:/V FoxPro程序设计程序设计8.1Visual FoxPro系统菜单 v在在Windows环境下,常见的菜单类型有两种:下拉式菜单和快捷菜环境下,常见的菜单类型有两种:下拉式菜单和快捷菜单。单。v一、下拉式菜单一、下拉式菜单v一般是由一个称作一般是由一个称作“主菜单主菜单”的条形菜单栏和一组称作的条形菜单栏和一组称作“子菜单子菜单”的的下拉式菜单组成。下拉式菜单组成。v
2、条形菜单栏一般位于应用程序窗口的标题栏的下方,是一个启动应用条形菜单栏一般位于应用程序窗口的标题栏的下方,是一个启动应用程序后始终都可以看到的菜单名列表栏。菜单栏中的每个菜单名代表程序后始终都可以看到的菜单名列表栏。菜单栏中的每个菜单名代表一个主菜单项,每一个主菜单项可以直接对应一个命令或过程。一个主菜单项,每一个主菜单项可以直接对应一个命令或过程。v通常,每一个主菜单项对应有一个下拉菜单作为它的子菜单,子菜单通常,每一个主菜单项对应有一个下拉菜单作为它的子菜单,子菜单中包含了一组菜单选项。子菜单中的每个菜单项可直接对应一条命令,中包含了一组菜单选项。子菜单中的每个菜单项可直接对应一条命令,也
3、可对应于下一级子菜单,子菜单里又可以包含一组相关的菜单项,也可对应于下一级子菜单,子菜单里又可以包含一组相关的菜单项,从而形成一种级联的菜单结构。从而形成一种级联的菜单结构。8.1.1菜单结构http:/V FoxPro程序设计程序设计8.1.1菜单结构v在子菜单中,对功能上密切相关的菜单项可以放置分隔线划分菜单选项在子菜单中,对功能上密切相关的菜单项可以放置分隔线划分菜单选项的组别。菜单项一般都有一个热键,用括号中带下划线的字母表示,同的组别。菜单项一般都有一个热键,用括号中带下划线的字母表示,同时按时按ALT键和带下划线的字母键即可下拉出所代表的菜单。快捷键通常键和带下划线的字母键即可下拉
4、出所代表的菜单。快捷键通常是是Ctrl键和另一个字符键组成的组合键,不论菜单是否激活,都可以通键和另一个字符键组成的组合键,不论菜单是否激活,都可以通过快捷键选择相应的菜单项。如图过快捷键选择相应的菜单项。如图8-1所示。所示。图图8-1VFP系统菜单系统菜单 http:/V FoxPro程序设计程序设计8.1.1菜单结构v二、快捷菜单二、快捷菜单v当鼠标指针指向某个界面对象单击鼠标右键,通常会弹出一个快捷菜单,列出针对当前对当鼠标指针指向某个界面对象单击鼠标右键,通常会弹出一个快捷菜单,列出针对当前对象的各种可用命令,免除了在主菜单中一一查找的麻烦。快捷菜单一般只有一个弹出式菜象的各种可用命
5、令,免除了在主菜单中一一查找的麻烦。快捷菜单一般只有一个弹出式菜单。菜单组中的每个菜单项可直接对应于一条命令,也可对应于一个级联子菜单。图单。菜单组中的每个菜单项可直接对应于一条命令,也可对应于一个级联子菜单。图8-2 是在是在VFP命令窗口右击时弹出的快捷菜单,其中列出了与命令窗口操作有关的命令项。命令窗口右击时弹出的快捷菜单,其中列出了与命令窗口操作有关的命令项。图图8-2 快捷菜单快捷菜单 http:/V FoxPro程序设计程序设计8.1.2系统菜单 vVisual FoxPro系统菜单是一个典型的菜单系统,其主菜系统菜单是一个典型的菜单系统,其主菜单是一个条形菜单。选择条形菜单中的每
6、一个菜单项都会弹单是一个条形菜单。选择条形菜单中的每一个菜单项都会弹出一个下拉菜单。出一个下拉菜单。v在在Visual FoxPro中,每一个条形菜单都有一个内部名字中,每一个条形菜单都有一个内部名字和一组菜单选项,每个菜单选项都有一个名称(标题)和内和一组菜单选项,每个菜单选项都有一个名称(标题)和内部名字。例如,部名字。例如,Visual FoxPro主菜单的内部名字为主菜单的内部名字为_MSYSMENU,条形菜单项,条形菜单项“文件文件”、“编辑编辑”和和“窗口窗口”的内部名字分别为的内部名字分别为_MSM_FILE,_MSM_EDIT,_MSM_WINDOW。v每一个弹出式菜单也有一个
7、内部名字和一组菜单选项,每个每一个弹出式菜单也有一个内部名字和一组菜单选项,每个菜单选项则有一个名称(标题)和选项序号。例如,菜单选项则有一个名称(标题)和选项序号。例如,_MFILE,_MEDIT,_MWINDOW为弹出式菜单项为弹出式菜单项“文件文件”、“编辑编辑”和和“窗口窗口”的内部名字。菜单项的名称用的内部名字。菜单项的名称用于在屏幕上显示菜单系统,而内部名字或选项序号则用于在于在屏幕上显示菜单系统,而内部名字或选项序号则用于在程序代码中引用。程序代码中引用。http:/V FoxPro程序设计程序设计8.1.2系统菜单v通过通过SET SYSMENU命令可以允许或禁止在程序执行时访
8、问系统菜单,命令可以允许或禁止在程序执行时访问系统菜单,也可以重新设置系统菜单。也可以重新设置系统菜单。v命令格式:命令格式:vSET SYSMENU ON|OFF|AUTOMATIC|TO|TO|TO DEFAULT|SAVE|NOSAVEv其中:其中:vON允许程序执行时访问系统菜单;允许程序执行时访问系统菜单;vOFF禁止程序执行时访问系统菜单;禁止程序执行时访问系统菜单;vAUTOMATIC可使系统菜单显示出来,可以访问系统菜单;可使系统菜单显示出来,可以访问系统菜单;vTO子句用于重新设置系统菜单:子句用于重新设置系统菜单:“TO”以菜单项以菜单项内部名字列出可用的弹出式菜单,内部名
9、字列出可用的弹出式菜单,“TO”以条形以条形菜单项内部名字列出可用的子菜单,菜单项内部名字列出可用的子菜单,“TO DEFAULT”将系统菜单恢将系统菜单恢复为缺省配置;复为缺省配置;vSAVE将当前系统菜单配置指定为缺省配置;将当前系统菜单配置指定为缺省配置;vNOSAVE将缺省设置恢复成将缺省设置恢复成Visual FoxPro系统的标准配置。系统的标准配置。http:/V FoxPro程序设计程序设计8.1.2系统菜单v【例例8-1】要求仅保留要求仅保留Visual FoxPro系统菜单的系统菜单的“文件文件”、“工具工具”、“窗窗口口”和和“格式格式“菜单,其他选项从系统菜单中移去。菜
10、单,其他选项从系统菜单中移去。v在命令窗口输入以下命令并执行,执行后系统菜单显示效果如图在命令窗口输入以下命令并执行,执行后系统菜单显示效果如图8-3所示。所示。v命令序列:命令序列:vSET SYSMENU TO _MFILE,_MTOOLS,_MWINDOW,_MSM_TEXT 图图8-3 设置后的菜单窗口设置后的菜单窗口 http:/V FoxPro程序设计程序设计8.1.2系统菜单v【例例8-2】将系统菜单恢复成标准菜单。将系统菜单恢复成标准菜单。v命令序列:命令序列:vSET SYSMENU NOSAVEvSET SYSMENU TO DEFAULTv逐条执行上述命令后,系统菜单将恢
11、复成标准设置。逐条执行上述命令后,系统菜单将恢复成标准设置。v【例例8-3】从从“文件文件”菜单项的下拉菜单中移去菜单项的下拉菜单中移去“新建新建”和和“打开打开”菜菜单项。单项。v通过通过RELAEASE BAR命令可以从指定的菜单中移去指定的菜单项。命令可以从指定的菜单中移去指定的菜单项。v命令格式:命令格式:RELEASE BAR OF v命令序列:命令序列:vRELEASE BAR _MFI_NEW OF _MFILEvRELEASE BAR _MFI_OPEN OF _MFILEv逐条执行上述命令后,逐条执行上述命令后,“文件文件”菜单项的下拉菜单中移去了菜单项的下拉菜单中移去了“新
12、建新建”和和“打开打开”两个菜单项。两个菜单项。http:/V FoxPro程序设计程序设计82菜单设计 v开发一个应用程序通常都需要创建自己的菜单系统。不管应用程序的规开发一个应用程序通常都需要创建自己的菜单系统。不管应用程序的规模多大,打算使用的菜单多么复杂,创建菜单系统都需要以下步骤:模多大,打算使用的菜单多么复杂,创建菜单系统都需要以下步骤:v第第1步:规划与设计系统:确定需要哪些菜单、出现在界面的何处以及步:规划与设计系统:确定需要哪些菜单、出现在界面的何处以及哪几个菜单要有子菜单等等。哪几个菜单要有子菜单等等。v第第2步:创建菜单和子菜单:使用菜单设计器可以定义菜单标题、菜单步:创
13、建菜单和子菜单:使用菜单设计器可以定义菜单标题、菜单项和子菜单。项和子菜单。v第第3步:按实际要求为菜单系统指定任务:指定菜单所要执行的任务,步:按实际要求为菜单系统指定任务:指定菜单所要执行的任务,例如显示表单或对话框等。另外,如果需要,还可以包含初始化代码和例如显示表单或对话框等。另外,如果需要,还可以包含初始化代码和清理代码。初始化代码在定义菜单系统之前执行,其中可以打开文件;清理代码。初始化代码在定义菜单系统之前执行,其中可以打开文件;声明变量;或将菜单系统保存到堆栈中,以便可以在后面的程序执行中声明变量;或将菜单系统保存到堆栈中,以便可以在后面的程序执行中恢复。清理代码中包含的代码在
14、菜单的定义代码之后执行,使菜单和菜恢复。清理代码中包含的代码在菜单的定义代码之后执行,使菜单和菜单项可用或不可用。单项可用或不可用。v第第4步:生成菜单程序。步:生成菜单程序。v第第5步:运行生成的程序,测试菜单系统。步:运行生成的程序,测试菜单系统。http:/V FoxPro程序设计程序设计8.2.1菜单设计器 v要创建用户的菜单系统,可以使用菜单设计器。要创建用户的菜单系统,可以使用菜单设计器。v进入菜单设计器的方法有多种,最简单的方法是:从进入菜单设计器的方法有多种,最简单的方法是:从“文件文件”菜单中,菜单中,选择选择“新建新建”菜单项,得到新建对话框,选中菜单项,得到新建对话框,选
15、中“菜单菜单”单选按钮,单击单选按钮,单击“新建文件新建文件”按钮进入菜单设计器窗口,如图按钮进入菜单设计器窗口,如图8-5所示。所示。图图8-5“菜单设计器菜单设计器”对话框对话框 http:/V FoxPro程序设计程序设计8.2.1菜单设计器v菜单设计器窗口主要由以下几部分组成:菜单设计器窗口主要由以下几部分组成:v(1)菜单名称)菜单名称v该列用于指定各菜单项的标题名称及菜单项的访问键。例如:该列用于指定各菜单项的标题名称及菜单项的访问键。例如:定义一个标题名为定义一个标题名为“文件文件”的菜单项,并设置其访问键为的菜单项,并设置其访问键为F键,可在菜单名栏中输入键,可在菜单名栏中输入
16、“文件(文件(F)”。v要用分隔线功能将相关的菜单项分别成线,在要用分隔线功能将相关的菜单项分别成线,在“菜单名称菜单名称”栏中键入栏中键入“-”,便可创建一条分隔线。,便可创建一条分隔线。v此外,在每个菜单项的前面有一个小方块按钮,当鼠标移动此外,在每个菜单项的前面有一个小方块按钮,当鼠标移动到它的上面时形状会变成上下双箭头的样子。这个按钮是标到它的上面时形状会变成上下双箭头的样子。这个按钮是标准的移动指示器,用鼠标上下拖动它可以改变当前菜单项在准的移动指示器,用鼠标上下拖动它可以改变当前菜单项在菜单列表中的位置。菜单列表中的位置。http:/V FoxPro程序设计程序设计8.2.1菜单设
17、计器v(2)结果)结果v该列用于指定激活菜单项时的动作,有以下该列用于指定激活菜单项时的动作,有以下4个选项:个选项:v子菜单:如果用户所定义的当前菜单项还有子菜单的话应选择这一项。当选中子菜单:如果用户所定义的当前菜单项还有子菜单的话应选择这一项。当选中该项后,在其右侧将出现一该项后,在其右侧将出现一“创建创建”按钮,单击按钮,单击“创建创建”按钮后将进入新的一屏按钮后将进入新的一屏来设计子菜单。来设计子菜单。v命令:如果当前菜单项的功能是执行某种动作的话应选择这一项。当选中该项命令:如果当前菜单项的功能是执行某种动作的话应选择这一项。当选中该项后,在其右侧出现一文本框,在这个文本框中输入要
18、执行的命令。这个选项仅对后,在其右侧出现一文本框,在这个文本框中输入要执行的命令。这个选项仅对应于执行一条命令或调用其他程序的情况。如果所要执行的动作需多条命令完成,应于执行一条命令或调用其他程序的情况。如果所要执行的动作需多条命令完成,而又无相应的程序可用,那么在这里应该选择而又无相应的程序可用,那么在这里应该选择“过程过程”。v主菜单名主菜单名/菜单项菜单项#:主菜单名项出现在定义主菜单时,菜单项:主菜单名项出现在定义主菜单时,菜单项#出现在定义出现在定义子菜单项时。当选中这一项时,在其右侧出现一文本框,用户可在文本框输入一子菜单项时。当选中这一项时,在其右侧出现一文本框,用户可在文本框输
19、入一个名字。选择这一项的目的主要是为了在程序中引用它。例如,利用它来设计动个名字。选择这一项的目的主要是为了在程序中引用它。例如,利用它来设计动态菜单。如果用户不选择这一项,系统也会为各个主菜单和子菜单指定一个名称态菜单。如果用户不选择这一项,系统也会为各个主菜单和子菜单指定一个名称的,只是用户不知道而已。的,只是用户不知道而已。v过程:用于定义一个与菜单相关联的过程,当用户选择了该菜单项后将执行这过程:用于定义一个与菜单相关联的过程,当用户选择了该菜单项后将执行这个过程。如果选择了这项,在其右侧将出现一个过程。如果选择了这项,在其右侧将出现一“创建创建”按钮,按下该按钮将调出按钮,按下该按钮
20、将调出编辑窗口供输入过程代码。编辑窗口供输入过程代码。http:/V FoxPro程序设计程序设计8.2.1菜单设计器v(3)选项)选项v单击该按钮将弹出单击该按钮将弹出“提示选项提示选项”对话框,如图对话框,如图8-6所示。所示。v通过提示选项对话框用户可以设置菜单中的各菜单项的属性。比如定义菜单项的通过提示选项对话框用户可以设置菜单中的各菜单项的属性。比如定义菜单项的快捷键,控制如何禁止或允许使用菜单项,选中的菜单项时在系统状态条上是否快捷键,控制如何禁止或允许使用菜单项,选中的菜单项时在系统状态条上是否显示对菜单项的说明信息,指定菜单项的名字以及在编辑显示对菜单项的说明信息,指定菜单项的
21、名字以及在编辑OLE对象期间控制菜对象期间控制菜单项的位置等。该对话框主要有以下选项:单项的位置等。该对话框主要有以下选项:图图8-6“提示选项提示选项”对话框对话框http:/V FoxPro程序设计程序设计8.2.1菜单设计器v“快捷方式快捷方式”选项区域:该区用于指定菜单或菜单项的快捷键。其中选项区域:该区用于指定菜单或菜单项的快捷键。其中“键标签键标签”文本框用于显示键组合。设置快捷键的方法是:将光标置于文本框用于显示键组合。设置快捷键的方法是:将光标置于“键标签键标签”文本框中,然后在键盘上按下快捷键,文本框中便会自动显文本框中,然后在键盘上按下快捷键,文本框中便会自动显示该快捷键名
22、称。例如按下示该快捷键名称。例如按下Crtl+R键,文本框中就出现键,文本框中就出现Crtl+R键。键。“键说明键说明”用于显示需要出现在菜单项旁边的文本,用作对快捷键的说明,用于显示需要出现在菜单项旁边的文本,用作对快捷键的说明,文本框中的内容通常与用户设置的快捷键名称相同。文本框中的内容通常与用户设置的快捷键名称相同。v“位置位置”选项区域:在该区域可指定用户在应用程序中编辑一个选项区域:在该区域可指定用户在应用程序中编辑一个OLE对象时菜单项的位置。有对象时菜单项的位置。有“无无”、“左左”“中中”“右右”多个选项。多个选项。v“跳过跳过”编辑框:设置一个表达式作为允许或禁止菜单项的条件
23、。当编辑框:设置一个表达式作为允许或禁止菜单项的条件。当菜单激活时,若表为真,则菜单项以灰色显示,表示当前不可用。菜单激活时,若表为真,则菜单项以灰色显示,表示当前不可用。v“信息信息”编辑框:定义菜单项的说明信息。当选中了该菜单项后,这编辑框:定义菜单项的说明信息。当选中了该菜单项后,这些信息将出现在些信息将出现在VFP的系统状态条上。的系统状态条上。v“主菜单名主菜单名/菜单项菜单项#”编辑框:指定主菜单项的内部名称或子菜单项编辑框:指定主菜单项的内部名称或子菜单项的序号。默认情况下,各菜单项无固定的名称,系统在生成菜单时将给的序号。默认情况下,各菜单项无固定的名称,系统在生成菜单时将给出
24、一个随机的名称或序号。出一个随机的名称或序号。v“备注备注”编辑框:在这里输入对菜单项的注释。不过这里的注释不会编辑框:在这里输入对菜单项的注释。不过这里的注释不会影响到生成的菜单程序代码,在运行菜单程序时影响到生成的菜单程序代码,在运行菜单程序时VFP将忽略所有的注释。将忽略所有的注释。http:/V FoxPro程序设计程序设计8.2.1菜单设计器v(4)“菜单级菜单级”下拉列表下拉列表v这个弹出列表显示当前所处的菜单级别。当菜单的层次较多时利用这一这个弹出列表显示当前所处的菜单级别。当菜单的层次较多时利用这一项可知道当前的位置。从子菜单返回上面任意一级菜单也要使用这一项。项可知道当前的位
25、置。从子菜单返回上面任意一级菜单也要使用这一项。v(5)“预览预览”按钮按钮v使用这个按钮可以预览当前定义的菜单,该菜单出现在原来系统菜单的使用这个按钮可以预览当前定义的菜单,该菜单出现在原来系统菜单的地方。可在所显示的菜单中进行选择,检查菜单的层次关系及提示等是地方。可在所显示的菜单中进行选择,检查菜单的层次关系及提示等是否正确,但是这种选择不会执行各菜单相应动作。否正确,但是这种选择不会执行各菜单相应动作。v(6)“插入插入”v单击该按钮可以在当前菜单的前面插入一新的菜单项。单击该按钮可以在当前菜单的前面插入一新的菜单项。v(7)“插入栏插入栏”按钮按钮v进行菜单设计器界面后,该按钮被激活
26、,用于插入一个进行菜单设计器界面后,该按钮被激活,用于插入一个VFP系统菜单项。系统菜单项。单击此按钮,打开单击此按钮,打开“插入系统菜单条插入系统菜单条”对话框,其中列出了各种对话框,其中列出了各种VFP系系统菜单命令。统菜单命令。v(8)“删除删除“按钮按钮v删除当前的菜单项。删除当前的菜单项。http:/V FoxPro程序设计程序设计8.2.1菜单设计器v要提醒用户注意的是,在菜单设计器环境下,系统的要提醒用户注意的是,在菜单设计器环境下,系统的“显示显示”菜单中增加了与菜单有关的菜单中增加了与菜单有关的两个选项。两个选项。v(1)常规选项)常规选项v选择该菜单项将打开选择该菜单项将打
27、开“常规选项常规选项”对话框,如图对话框,如图8-8所示。该对话框用于为整个菜单系统所示。该对话框用于为整个菜单系统指定代码。它主要由指定代码。它主要由“过程过程”、“编辑编辑”、“位置位置”、“菜单代码菜单代码”和和“顶层表单顶层表单”组成。组成。v(2)菜单项)菜单项v 当用户选择当用户选择“显示显示”菜单中的菜单中的“菜单选项菜单选项”命令时,将出现如图命令时,将出现如图8-9所示所示“菜单选项菜单选项”对对话框。该对话框用于为菜单栏或各子菜单输入代码,它包括话框。该对话框用于为菜单栏或各子菜单输入代码,它包括“名称名称”标签、标签、“过程过程”编辑编辑框和框和“编辑编辑”按钮。按钮。图
28、图8-8“常规选项常规选项”对话框对话框 图图8-9“菜单选项菜单选项”对话框对话框 http:/V FoxPro程序设计程序设计8.2.2定义菜单 v本节将通过一个具本节将通过一个具体的实例说明自定体的实例说明自定义菜单的方法和过义菜单的方法和过程。程。v【例例8-4】为学生为学生成绩管理系统设计成绩管理系统设计一个菜单系统。主一个菜单系统。主菜单包含有菜单包含有“数据数据维护维护”、“数据查数据查询询”、“报表打印报表打印”、“系统帮助系统帮助”和和“退出退出”5个菜单个菜单项,且各菜单项分项,且各菜单项分别带有下拉子菜单。别带有下拉子菜单。表表8-1 菜单项的设置菜单项的设置 菜单名称结
29、 果菜单级数据维护子菜单菜单栏学生信息数据维护命令数据维护课程信息维护命令数据维护-菜单项#数据维护学生成绩信息查询和维护命令数据维护数据查询子菜单菜单栏学生信息数据查询命令数据查询课程信息数据查询命令数据查询-菜单项#数据查询学生成绩信息查询和维护命令数据查询报表打印子菜单菜单栏生成学生信息报表命令报表打印生成课程信息报表命令报表打印生成学生成绩信息报表命令报表打印系统帮助命令菜单栏退出过程菜单栏http:/V FoxPro程序设计程序设计8.2.2定义菜单v操作步骤:操作步骤:v1规划菜单系统规划菜单系统v菜单项的设置如表菜单项的设置如表8-1所示。所示。v2单击单击“文件文件”菜单下的菜
30、单下的“新建新建”按钮,在弹出来的对话框中选中按钮,在弹出来的对话框中选中“菜单菜单”,然后选择,然后选择“新建文件新建文件”,打开菜单设计器。定义主菜单,如图,打开菜单设计器。定义主菜单,如图8-10所示。所示。图图8-10 定义主菜单定义主菜单http:/V FoxPro程序设计程序设计8.2.2定义菜单v3定义好主菜单后,定义各个子菜单。单击定义好主菜单后,定义各个子菜单。单击“数据维护数据维护”菜单项中的菜单项中的“创建创建”选项,进入子菜单定义界面,定义选项,进入子菜单定义界面,定义“数据维护数据维护”子菜单,如图子菜单,如图8-11所示。所示。图图8-11 “数据维护数据维护”子菜
31、单子菜单http:/V FoxPro程序设计程序设计8.2.2定义菜单v4从从“菜单级菜单级”列表框中选择列表框中选择“菜单栏菜单栏”选项,返回到主菜单定义界选项,返回到主菜单定义界面,并按同样的方法分别定义另外面,并按同样的方法分别定义另外“数据查询数据查询”和和“报表打印报表打印”2个子菜个子菜单,如图单,如图8-12、图、图8-13所示。所示。图图8-12 “数据查询数据查询”子菜单子菜单 图图8-13 “报表打印报表打印”子菜单子菜单 http:/V FoxPro程序设计程序设计8.2.2定义菜单v5在在“系统帮助系统帮助”菜单项的命令框中输入命令菜单项的命令框中输入命令“do for
32、m 帮助帮助.scx”。当执行该菜单项时可以打开帮助表单。当执行该菜单项时可以打开帮助表单。v6在在“退出退出”菜单项中,单击菜单项中,单击“退出退出”过程中的过程中的“编辑编辑”选项,并在选项,并在其中输入程序代码,如图其中输入程序代码,如图8-14所示。所示。图图8-14“退出退出”过程过程 http:/V FoxPro程序设计程序设计8.2.2定义菜单v7单击单击“预览预览”按钮可预览设计好的菜单效果,如图按钮可预览设计好的菜单效果,如图8-15所示。所示。v8选择菜单选择菜单“文件保存文件保存”,弹出,弹出“另存为另存为”对话框,将菜单保存对话框,将菜单保存为为“主菜单主菜单.MNX”
33、,以便以后修改。系统除创建一个扩展名为,以便以后修改。系统除创建一个扩展名为MNX的的菜单文件外,还会自动创建一个同名的菜单备注文件(菜单文件外,还会自动创建一个同名的菜单备注文件(MNT)。)。图图8-15“学生成绩管理学生成绩管理”系统菜单系统菜单http:/V FoxPro程序设计程序设计8.2.2定义菜单v9选择主菜单选择主菜单“菜单生成菜单生成”,弹出,弹出“生成菜单生成菜单”对话框,如图对话框,如图8-16所示。所示。在在“输出文件输出文件”文本框中显示出系统设定的路径、文件夹和文件名,文件名默认文本框中显示出系统设定的路径、文件夹和文件名,文件名默认与菜单格式文件名相同。如果要放
34、在别的文件夹或重新命名,可以直接在文本框与菜单格式文件名相同。如果要放在别的文件夹或重新命名,可以直接在文本框中修改,也可以单击文本框右端按钮打开中修改,也可以单击文本框右端按钮打开“另存为另存为”对话框,指定新的路径。最对话框,指定新的路径。最后单击后单击“生成生成”按钮,系统会自动生成菜单程序,菜单程序文件的扩展名为按钮,系统会自动生成菜单程序,菜单程序文件的扩展名为MPR。图图8-16生成菜单程序生成菜单程序 http:/V FoxPro程序设计程序设计8.2.2定义菜单v10选择主菜单选择主菜单“程序运行程序运行”,会弹出图,会弹出图8-17所示对话框,选中要运行的所示对话框,选中要运
35、行的菜单程序菜单程序“主菜单主菜单.MPR”,单击,单击“运行运行”按钮,系统菜单将换成用户菜单,如按钮,系统菜单将换成用户菜单,如图图8-18所示。所示。图图8-17“运行运行”对话框对话框图图8-18 用户菜单用户菜单 v11在命令窗口输入命令:在命令窗口输入命令:set sysmenu to default,可以结束用户,可以结束用户菜单运行,重新显示系统菜单运行,重新显示系统主菜单。如果用户菜单设主菜单。如果用户菜单设置了置了“退出退出”菜单,也可菜单,也可以单击以单击“退出退出”来结束用来结束用户菜单的运行。户菜单的运行。http:/V FoxPro程序设计程序设计8.2.3为顶层表
36、单添加菜单为顶层表单添加菜单v一般情况下,使用菜单设计器设计的菜单,运行在一般情况下,使用菜单设计器设计的菜单,运行在Visual FoxPro的图文框中,也就是说,用户菜单不是在窗口的顶的图文框中,也就是说,用户菜单不是在窗口的顶层,而是在第二层,因为层,而是在第二层,因为Visual FoxPro标题一直被显示。标题一直被显示。如何去掉该标题,而换成用户指定的标题,可以通过顶层菜如何去掉该标题,而换成用户指定的标题,可以通过顶层菜单设计来实现。其基本思想是:单设计来实现。其基本思想是:v第第1步:在菜单设计器设计好菜单,然后步:在菜单设计器设计好菜单,然后VFP系统菜单中选系统菜单中选择择
37、“显示显示”下的下的“常规选项常规选项”菜单项,在菜单项,在“常规选项常规选项”对话对话框中选中框中选中“顶层表单顶层表单”复选框,生成菜单程序。复选框,生成菜单程序。v第第2步:创建一个表单,该表单只设置标题为用户指定的标步:创建一个表单,该表单只设置标题为用户指定的标题,然后在题,然后在Init方法中添加如下代码:方法中添加如下代码:vDO 菜单程序名菜单程序名 WITH THIS,.T.v第第3步:将表单的步:将表单的ShowWindow属性设置为属性设置为2,使其成为,使其成为“顶层表单顶层表单”。http:/V FoxPro程序设计程序设计8.2.3为顶层表单添加菜单为顶层表单添加菜
38、单v【例例8-5】将案例将案例8-4设计的自定义菜单添加到顶层表单中。设计的自定义菜单添加到顶层表单中。v操作步骤:操作步骤:v1打开打开“主菜单主菜单.MNX”,进行菜单设计器。,进行菜单设计器。v2选择选择“显示显示”下的下的“常规选项常规选项”命令,在命令,在“常规选项常规选项”对话框中选中对话框中选中“顶层表单顶层表单”复选框。复选框。v3单击常用工具栏上的单击常用工具栏上的“保存保存“按钮,保存修改后的自定义菜单;然后选择按钮,保存修改后的自定义菜单;然后选择“菜单菜单”下的下的“生成生成”菜单项,重新生成新的菜单文件菜单项,重新生成新的菜单文件“主菜单主菜单.MPR”。v4选择选择
39、“文件文件”下的下的“新建新建”命令,在命令,在“新建新建”对话框中选择对话框中选择“表单表单”文件类型。单击文件类型。单击“新建文件新建文件”按钮,打开表单设计器,表单属性设置如表按钮,打开表单设计器,表单属性设置如表8-2所示。所示。表表8-2 表单属性设置表单属性设置属性名称属性值Caption学生成绩管理系统AlwaysOntop.T.AutoCenter.T.ShowWindow2http:/V FoxPro程序设计程序设计8.2.3为顶层表单添加菜单为顶层表单添加菜单v5为表单的为表单的Init事件过程添加如下代码:事件过程添加如下代码:vDo 主菜单主菜单.MPR WITH TH
40、IS,.T.v6保存表单,并运行,运行效果如图保存表单,并运行,运行效果如图8-19所示。所示。图图8-19 顶层表单中的菜单顶层表单中的菜单 http:/V FoxPro程序设计程序设计8.3快捷菜单设计 v当鼠标在窗口的某个对象上右击,将显示一快捷菜单,快捷菜单通常列当鼠标在窗口的某个对象上右击,将显示一快捷菜单,快捷菜单通常列出与相应对象有关的功能命令。与下拉菜单相比较,快捷菜单没有条形出与相应对象有关的功能命令。与下拉菜单相比较,快捷菜单没有条形菜单栏,只有一个弹出式菜单。因此,对于快捷菜单仅需设计菜单项及菜单栏,只有一个弹出式菜单。因此,对于快捷菜单仅需设计菜单项及其子菜单。其子菜单
41、。v利用菜单设计器可以创建快捷菜单,并可以将这些菜单附加在控件上。利用菜单设计器可以创建快捷菜单,并可以将这些菜单附加在控件上。v创建快捷菜单的具体步骤是:创建快捷菜单的具体步骤是:v1、选择项目管理器中的、选择项目管理器中的“其他其他”选项卡,选定选项卡,选定“菜单菜单”选项,并单击选项,并单击“新建新建”按钮。在按钮。在“新建菜单新建菜单”对话框中单击对话框中单击“快捷菜单快捷菜单”按钮,打开按钮,打开“快捷菜单设计器快捷菜单设计器”对话框。对话框。v2、在、在“快捷菜单设计器快捷菜单设计器”中添加菜单项,其过程与创建下拉菜单完全中添加菜单项,其过程与创建下拉菜单完全相同,即在相同,即在“
42、菜单名称菜单名称”框中指定相应的菜单标题,在框中指定相应的菜单标题,在“结果结果”框中选框中选择菜单激活后的动作并编写相应的命令或过程代码。单击择菜单激活后的动作并编写相应的命令或过程代码。单击“选项选项”栏中栏中的按钮后,在的按钮后,在“提示选项提示选项”对话框中设置快捷键等。对话框中设置快捷键等。v3、预览快捷菜单。、预览快捷菜单。v4、选择、选择“文件文件”下的下的“另存为另存为”命令,保存快捷菜单的定义文件命令,保存快捷菜单的定义文件(.MNX)。)。http:/V FoxPro程序设计程序设计8.3快捷菜单设计v5、选择、选择“菜单菜单”下的下的“生成生成”命令,生成相应的菜单程序文
43、件命令,生成相应的菜单程序文件(.MPR)。v要使用创建的快捷菜单,可以在表单设计器环境下选定需要调用快捷菜单的对象,要使用创建的快捷菜单,可以在表单设计器环境下选定需要调用快捷菜单的对象,在该对象的在该对象的RightClick事件过程中添加调用快捷菜单程序的代码:事件过程中添加调用快捷菜单程序的代码:vDo v【例例8-6】为表单的一个标签控件建立快捷菜单,其结构如图为表单的一个标签控件建立快捷菜单,其结构如图8-20所示。所示。v快捷菜单中包含了快捷菜单中包含了3个菜单项:字体、大小、颜色,它们分别带有下级子菜单,个菜单项:字体、大小、颜色,它们分别带有下级子菜单,选择不同的的字体、大小
44、、颜色时,标签标题随之发生相应的改变。选择不同的的字体、大小、颜色时,标签标题随之发生相应的改变。图图8-20 在表单中调用快捷菜单在表单中调用快捷菜单 http:/V FoxPro程序设计程序设计8.3快捷菜单设计v操作步骤如下:操作步骤如下:v1选择选择“文件文件”菜单下的菜单下的“新建新建”命命令,从令,从“新建新建”对话框中选择对话框中选择“菜单菜单”文件类型,在文件类型,在“新建菜单新建菜单”对话框中单对话框中单击击“快捷菜单快捷菜单”按钮,打开按钮,打开“快捷菜单快捷菜单设计器设计器”对话框。对话框。v2定义快捷菜单各选项的名称,如表定义快捷菜单各选项的名称,如表8-3所示。所示。
45、菜单名称菜单名称结结 果果字体(F)子菜单宋体通用过程楷体黑体隶书大小(S)子菜单14命令:_VFP.ActiveForm.Label1.FontSize=1418命令:_VFP.ActiveForm.Label1.FontSize=1822命令:_VFP.ActiveForm.Label1.FontSize=22颜色(C)子菜单黑色通用过程黄色红色蓝色图图8-21“新建菜单新建菜单”对话框对话框http:/V FoxPro程序设计程序设计8.3快捷菜单设计v3在在“菜单级菜单级”列表框中选择列表框中选择“快捷菜单快捷菜单”项,回到顶层菜单。选择项,回到顶层菜单。选择“字体字体”菜单项,菜单项
46、,单击单击“编辑编辑”按钮,重新进入按钮,重新进入“字体字体”子菜单,如图子菜单,如图8-22所示。选择所示。选择“显示显示”菜单下的菜单下的“菜单选项菜单选项”命令,打开命令,打开“菜单选项菜单选项”对话框,单击对话框,单击“编辑编辑”按钮,再单击按钮,再单击“确定确定”按钮,按钮,进入代码编辑窗口,为进入代码编辑窗口,为“字体字体”编写通用过程,如图编写通用过程,如图8-23所示。编写完后关闭编辑窗口,所示。编写完后关闭编辑窗口,返回菜单设计器。返回菜单设计器。图图8-23“菜单选项菜单选项”对话框对话框图图8-22“字体字体”子菜单子菜单http:/V FoxPro程序设计程序设计8.3
47、快捷菜单设计v子菜单子菜单“字体字体”通用过程代码:通用过程代码:vDO CASEvCASE BAR()=1 vFt=“宋体宋体”&选择的菜单项的序号选择的菜单项的序号vCASE BAR()=2vFt=“楷体楷体-GB2312”vCASE BAR()=3vFt=“黑体黑体”vCASE BAR()=4vFt=“隶书隶书”vENDCASEv_VFP.ActiveForm.Label1.FontName=ftv4在在“菜单级菜单级”列表框中选择列表框中选择“快捷菜单快捷菜单”项,回到顶层菜单。选项,回到顶层菜单。选择择“大小大小”菜单项,单击菜单项,单击“编辑编辑”按钮进入按钮进入“大小大小”子菜单
48、,如图子菜单,如图8-24,在各个子菜单的命令框中输入相应的代码,内容如表,在各个子菜单的命令框中输入相应的代码,内容如表8-3所示。所示。图图8-24 “大小大小”子菜单子菜单 http:/V FoxPro程序设计程序设计8.3快捷菜单设计v5在在“菜单级菜单级”列表框中选择列表框中选择“快捷菜单快捷菜单”项,回到顶层菜单。选择项,回到顶层菜单。选择“颜色颜色”菜单项,单击菜单项,单击“编辑编辑”按钮,重新进入按钮,重新进入“颜色颜色”子菜单,如图子菜单,如图8-25所示。按同样的方法,为所示。按同样的方法,为“颜色颜色”子菜单中的各菜单项写通用过子菜单中的各菜单项写通用过程,代码如表程,代
49、码如表8-3所示。关闭编辑窗口,返回菜单设计器。所示。关闭编辑窗口,返回菜单设计器。v子菜单子菜单“颜色颜色”通用过程代码:通用过程代码:vDO CASEvCASE BAR()=1v c1=RGB(0,0,0)&函数函数RGB()返返回一种由给定的红、绿、蓝颜色合成的颜色回一种由给定的红、绿、蓝颜色合成的颜色vCASE BAR()=2 v c1=RGB(255,255,0)vCASE BAR()=3v c1=RGB(255,0,0)vCASE BAR()=4v c1=RGB(0,0,255)vENDCASEv_VFP.ActiveForm.Label1.ForeColor=c1 图图8-25
50、定义定义“颜色颜色”子菜单子菜单 http:/V FoxPro程序设计程序设计8.3快捷菜单设计v6单击单击“预览预览”按钮,预览快捷菜单。按钮,预览快捷菜单。v7选择选择“文件文件”菜单下的菜单下的“另存为另存为”命令,保存创建的快捷菜单,输入文件名命令,保存创建的快捷菜单,输入文件名“快捷菜单快捷菜单.MNR”。v8选择选择“菜单菜单”下的下的“生成生成”命令,生成相应的菜单程序文件命令,生成相应的菜单程序文件“快捷菜单快捷菜单.MPR”。v9选择选择“文件文件”菜单下的菜单下的“新建新建”命令,在命令,在“新建新建”对话框中选择对话框中选择“表单表单”文文件类型。新建一个表单,表单属性设