1、第第10章章 菜单设计菜单设计 10.1 VFP菜单概述菜单概述 10.2 下拉式菜单设计下拉式菜单设计 10.3 弹出式菜单设计弹出式菜单设计第第1010章章 菜单设计菜单设计10.1 VFP10.1 VFP菜单概述菜单概述 在在VFPVFP的程序设计中,一个应用程序一般以菜单(的程序设计中,一个应用程序一般以菜单(MENUMENU)的形)的形式列出其具有的功能,用户可通过菜单式列出其具有的功能,用户可通过菜单调用调用应用程序的各种功能。应用程序的各种功能。菜单文件的扩展名为菜单文件的扩展名为.MNX.MNX,菜单备注文件的扩展名为,菜单备注文件的扩展名为.MNT.MNT,菜单程,菜单程序文
2、件的扩展名为序文件的扩展名为.MPR.MPR。10.1.110.1.1菜单系统的规划和设计菜单系统的规划和设计 规划和设计菜单系统主要是确定需要哪些菜单,这规划和设计菜单系统主要是确定需要哪些菜单,这些菜单要出现在界面的何处,以及哪几个菜单要有子菜些菜单要出现在界面的何处,以及哪几个菜单要有子菜单等。因为应用程序的实用性在一定程度上取决于菜单单等。因为应用程序的实用性在一定程度上取决于菜单系统的质量,所以要对菜单系统进行统一的规划和设计。系统的质量,所以要对菜单系统进行统一的规划和设计。1.1.规划菜单系统规划菜单系统 规划菜单系统时,主要应该考虑用户使用和操作应用规划菜单系统时,主要应该考虑
3、用户使用和操作应用程序的方便性,通常必须遵循以下基本原则:程序的方便性,通常必须遵循以下基本原则:(1 1)根据用户所要执行的任务来组织菜单系统,即根据应用程序中的)根据用户所要执行的任务来组织菜单系统,即根据应用程序中的程序层次来组织菜单系统。用户只要浏览菜单和菜单项,就能较清晰程序层次来组织菜单系统。用户只要浏览菜单和菜单项,就能较清晰地了解应用系统的组织和功能情况。因此,在设计菜单和菜单项之前,地了解应用系统的组织和功能情况。因此,在设计菜单和菜单项之前,设计者必须清楚地掌握用户思考问题的方式和完成任务的方法。设计者必须清楚地掌握用户思考问题的方式和完成任务的方法。(2 2)给每个菜单和
4、菜单项设置一个有意义的标题和简短提示,以便于)给每个菜单和菜单项设置一个有意义的标题和简短提示,以便于用户准确地领会菜单项和菜单项所对应的操作或功能组成。用户准确地领会菜单项和菜单项所对应的操作或功能组成。(3 3)预先估计各菜单项的使用频率,根据使用频率、逻辑顺序或菜单)预先估计各菜单项的使用频率,根据使用频率、逻辑顺序或菜单项字母顺序来组织菜单项。经验表明,当一个菜单中的菜单项数目在项字母顺序来组织菜单项。经验表明,当一个菜单中的菜单项数目在8 8个以上时,按字母顺序排列菜单特别有效,能提高用户查看菜单项个以上时,按字母顺序排列菜单特别有效,能提高用户查看菜单项的速度。的速度。(4 4)对
5、同一个菜单中的菜单项进行逻辑分组,并用分隔线或分隔符将各)对同一个菜单中的菜单项进行逻辑分组,并用分隔线或分隔符将各组分开。对菜单项进行分组时,按照功能相近原则、功能顺序原则进行分组。组分开。对菜单项进行分组时,按照功能相近原则、功能顺序原则进行分组。(5 5)把一个菜单中的菜单项数尽可能地限制在一个屏幕能显示的范围内。若菜)把一个菜单中的菜单项数尽可能地限制在一个屏幕能显示的范围内。若菜单项的数目超过一屏,则应为其中的一些菜单项创建子菜单。显然,当一个菜单项的数目超过一屏,则应为其中的一些菜单项创建子菜单。显然,当一个菜单中的菜单项在一屏中显示不了,而采用滚动条进行滚动处理时,不利于用户单中
6、的菜单项在一屏中显示不了,而采用滚动条进行滚动处理时,不利于用户操作,同时也不直观。操作,同时也不直观。(6 6)为菜单和菜单项设置访问键或键盘快捷键。例如,用户按)为菜单和菜单项设置访问键或键盘快捷键。例如,用户按ALT+FALT+F键键,可可以访问以访问VFPVFP系统菜单的系统菜单的“文件文件”菜单项。菜单项。ALT+FALT+F常用作菜单项常用作菜单项“访问键访问键”。(7 7)使用能够准确描述菜单项的文字。用文字描述菜单项时,应使用日常用语,)使用能够准确描述菜单项的文字。用文字描述菜单项时,应使用日常用语,而不要使用计算机术语。菜单项描述文字应使用简单、生动的动词,而不要将而不要使
7、用计算机术语。菜单项描述文字应使用简单、生动的动词,而不要将名词当作动词使用。名词当作动词使用。以上是进行菜单规划设计时应当考虑的原则的一部分。要以应用系统所完以上是进行菜单规划设计时应当考虑的原则的一部分。要以应用系统所完成的任务为基础,以用户的需要和实用为依据来进行菜单设计。成的任务为基础,以用户的需要和实用为依据来进行菜单设计。2 设计菜单系统 要设计菜单系统,可以通过以下步骤进行:(1)规划系统。确定需要有哪些菜单,菜单要出现在界面的何处以及哪些菜单有子菜单等。(2)建立菜单和子菜单。使用“菜单设计器”可以定义菜单标题、菜单项和子菜单。(3)按实际要求为菜单系统指定任务,例如显示表单或
8、对话框等。另外,如果需要,还可以包含初始化代码和清理代码。初始化代码在定义菜单系统执行,其中所包含的代码用于打开文件,声明变量或将菜单系统保存到堆栈中,以便今后可以进行恢复。在清理代码中所包含的代码就在菜单定义代码执行,用于确定选择的菜单和菜单项是否可用。(4)生成菜单程序。(5)运行生成的程序,以测试菜单系统。10.1.210.1.2菜单的类型菜单的类型 VFPVFP支持两种类型的菜单:下拉式菜单和弹出式菜单。支持两种类型的菜单:下拉式菜单和弹出式菜单。菜单项名称后的括号中带有下划线的字母键是执行该命菜单项名称后的括号中带有下划线的字母键是执行该命令的键盘访问键,按下令的键盘访问键,按下Al
9、tAlt加括号中的字母键可执行相应的加括号中的字母键可执行相应的菜单命令。级联菜单中可直接按下菜单项名称后的括号中带菜单命令。级联菜单中可直接按下菜单项名称后的括号中带有下划线的字母键执行该命令。如打开窗口菜单可用有下划线的字母键执行该命令。如打开窗口菜单可用Alt+WAlt+W,打开其中的级联菜单清除可直接按打开其中的级联菜单清除可直接按R R键。有的菜单项名称后键。有的菜单项名称后面有面有CtrlCtrl或或AltAlt键与另一个键相结合。这是键盘快捷键。例键与另一个键相结合。这是键盘快捷键。例如,按如,按Ctrl+F2Ctrl+F2可在可在VFPVFP中显示命令窗口。中显示命令窗口。10
10、.1.3 10.1.3 系统菜单及其设置系统菜单及其设置菜单系统是由一个菜单栏、多个菜单项和下拉菜单组成。菜单系统是由一个菜单栏、多个菜单项和下拉菜单组成。菜单栏位于窗口标题下的水平条状区域,用于放置各个菜单菜单栏位于窗口标题下的水平条状区域,用于放置各个菜单项。菜单项是在菜单栏中的一个菜单的名称,也称菜单名,项。菜单项是在菜单栏中的一个菜单的名称,也称菜单名,它标识了所代表的一个菜单。单击菜单项即可弹出下拉菜单。它标识了所代表的一个菜单。单击菜单项即可弹出下拉菜单。菜单是包含命令、过程和子菜单的选项列表,因此按等级分菜单是包含命令、过程和子菜单的选项列表,因此按等级分为父菜单和子菜单,子菜单
11、挂在父菜单下作为父菜单的一个为父菜单和子菜单,子菜单挂在父菜单下作为父菜单的一个菜单项。菜单项。VFPVFP系统菜单系统菜单(1 1)菜单的标题要有实际应用意义。菜单项的布置要有一)菜单的标题要有实际应用意义。菜单项的布置要有一定的顺序,菜单项应在一个屏幕内。定的顺序,菜单项应在一个屏幕内。(2)在菜单的下拉菜单项中,有可启用和已废止两种状态。可启用状态的菜单项是黑色的文字。已废止的菜单项是暗灰色的文字。系统菜单中各菜单的菜单项状态取决于当时用户操作状态。工具栏的每个按钮和菜单中的某个菜单项相对应,如果菜单项是可启用的,则它的工具栏按钮也是可启用的,是黑色的。(3)在菜单的下拉菜单项中,用分隔
12、线将菜单中内容相关的菜单项分隔成组,增强了菜单的可读性。如果菜单左边出现钩子的标记字符,则表示该菜单项被选择。(4)当菜单尾部带有一个黑色小三角时,表示这个菜单项还有一级子菜单。(5)大多数菜单项都有它的一个键盘访问键,当按住ALT键同时按下这个菜单项的访问键时,即可选择这个菜单项。菜单访问键可以代替鼠标的单击操作。(6)一般菜单项还有它的快捷键,按下它的快捷键,可直接执行相应的操作。1.1.下拉式菜单下拉式菜单 VFP9.0VFP9.0系统的主菜单是一个下拉式菜单,包括文件、编辑、显示、系统的主菜单是一个下拉式菜单,包括文件、编辑、显示、格式、工具、程序、窗口、帮助等格式、工具、程序、窗口、
13、帮助等8 8个菜单项。每个菜单项又包括若个菜单项。每个菜单项又包括若干个级联菜单项。干个级联菜单项。系统主菜单可通过系统主菜单可通过SET SYSMENUSET SYSMENU命令来设置。命令来设置。VFPVFP系统允许使用该系统允许使用该命令在程序运行期间,启用或废止命令在程序运行期间,启用或废止VFPVFP主菜单栏,同时,还可以用主菜单栏,同时,还可以用SET SET SYSMENUSYSMENU命令,有选择地移去命令,有选择地移去VFPVFP主菜单系统中的菜单标题和菜单项,主菜单系统中的菜单标题和菜单项,并对其重新配置,也可以将其恢复。并对其重新配置,也可以将其恢复。【命令格式【命令格式
14、】SET SYSMENU ON/OFF/AUTOMATIC/TO SET SYSMENU ON/OFF/AUTOMATIC/TO/TO/TO/SAVE/NOSAVE/SAVE/NOSAVE【功能】设置系统菜单。【功能】设置系统菜单。【说明【说明】(1 1)SET SYSMENU ONSET SYSMENU ON:允许程序执行时访问系统主菜单。:允许程序执行时访问系统主菜单。(2 2)SET SYSMENU OFFSET SYSMENU OFF:禁止程序执行时访问系统主菜单。:禁止程序执行时访问系统主菜单。(3 3)SET SYSMENU AUTOMATICSET SYSMENU AUTOMAT
15、IC:可使系统菜单显示出来,可:可使系统菜单显示出来,可 以访问系统菜单。是以访问系统菜单。是VFPVFP中的默认设置。中的默认设置。(4 4)SET SYSMENU TO SET SYSMENU TO :重新配置系统:重新配置系统菜单,列出可用菜单项。菜单项及其对应的内部文件菜单,列出可用菜单项。菜单项及其对应的内部文件名为:文件(名为:文件(_MFILE_MFILE)、编辑()、编辑(_MEDIT_MEDIT)、格式)、格式(_TEXT)(_TEXT)、显示(显示(_MVIEW_MVIEW)、工具()、工具(_MTOOLS_MTOOLS)、程序()、程序(_MPROG_MPROG)、)、窗
16、口(窗口(_MWINDOW_MWINDOW)、帮助()、帮助(_MSYSTEM_MSYSTEM)。例如用)。例如用SET SET SYSM TO _MFILE,_MWINDOWSYSM TO _MFILE,_MWINDOW命令,可列出文件菜单和窗口命令,可列出文件菜单和窗口菜单。菜单。(5 5)SET SYSMENU TO DEFAULTSET SYSMENU TO DEFAULT:恢复系统菜单的缺省:恢复系统菜单的缺省配置。如果对主菜单栏或它的菜单做过修改,可发出配置。如果对主菜单栏或它的菜单做过修改,可发出SET SET SYSMENU TO DEFAULTSYSMENU TO DEFAU
17、LT命令恢复系统菜单。命令恢复系统菜单。(6 6)SET SYSMENU SAVESET SYSMENU SAVE:将当前设置的系统菜单指定:将当前设置的系统菜单指定为缺省配置。如果在发出为缺省配置。如果在发出SET SYSMENU SAVESET SYSMENU SAVE命令之后修命令之后修改了菜单系统,可以通过改了菜单系统,可以通过SET SYSMENU TO DEFAULTSET SYSMENU TO DEFAULT命令命令来恢复前面的设置。来恢复前面的设置。(7 7)SET SYSMENU NOSAVESET SYSMENU NOSAVE:将缺省配置恢复成:将缺省配置恢复成VFPVFP
18、系统系统菜单的标准配置,操作时应先执行菜单的标准配置,操作时应先执行SET SYSMENU NOSAVESET SYSMENU NOSAVE命命令,然后再执行令,然后再执行SET SYSMENU TO DEFAULTSET SYSMENU TO DEFAULT命令。只有这样,命令。只有这样,才会显示默认的才会显示默认的VFPVFP系统菜单。系统菜单。(8 8)SET SYSMENU TOSET SYSMENU TO:关闭:关闭VFPVFP系统主菜单栏。系统主菜单栏。2.2.弹出式菜单弹出式菜单 弹出式菜单包括剪切、复制、粘贴、生成表达式、运弹出式菜单包括剪切、复制、粘贴、生成表达式、运行所选区
19、域、清除、属性等,按下菜单项的快捷键可打开行所选区域、清除、属性等,按下菜单项的快捷键可打开菜单命令,如打开属性按菜单命令,如打开属性按E E键。键。下面将详细介绍这两种菜单的设计方法和应用。下面将详细介绍这两种菜单的设计方法和应用。10.2 10.2 下拉式菜单设计下拉式菜单设计 下拉式菜单是一种最常见的菜单,用下拉式菜单是一种最常见的菜单,用VFPVFP提供的菜单提供的菜单设计可以方便地进行下拉式菜单的设计。具体来说,菜设计可以方便地进行下拉式菜单的设计。具体来说,菜单设计器的功能有两个:一是为顶层表单设计下拉式菜单设计器的功能有两个:一是为顶层表单设计下拉式菜单,二是通过定制单,二是通过
20、定制VFPVFP系统菜单建立应用程序的下拉式菜系统菜单建立应用程序的下拉式菜单。单。在利用菜单设计器设计菜单时,各菜单项及其功能在利用菜单设计器设计菜单时,各菜单项及其功能可以由自己来定义,也可以采用可以由自己来定义,也可以采用VFPVFP系统的标准菜单项及系统的标准菜单项及其功能。其功能。菜单设计的基本过程是:调用菜单设计器设计菜单,菜单设计的基本过程是:调用菜单设计器设计菜单,产生菜单文件产生菜单文件(.MNX)(.MNX)及菜单备注文件及菜单备注文件(.MNT)(.MNT),调用菜单,调用菜单生成器生成菜单程序文件生成器生成菜单程序文件(.MPR)(.MPR),运行菜单程序。,运行菜单程
21、序。10.2.110.2.1菜单文件的建立和打开菜单文件的建立和打开 菜单设计器用于设计用户自己的菜单系统。使用菜单设菜单设计器用于设计用户自己的菜单系统。使用菜单设计器可以创建并设计菜单栏、菜单项、子菜单、菜单项的计器可以创建并设计菜单栏、菜单项、子菜单、菜单项的快捷键及分隔相关菜单组的分隔线等。用菜单设计器还可快捷键及分隔相关菜单组的分隔线等。用菜单设计器还可以设计快捷菜单。下面介绍设计菜单的操作步骤。以设计快捷菜单。下面介绍设计菜单的操作步骤。1.1.利用界面操作:利用界面操作:(1 1)在)在VFPVFP系统菜单栏中选择系统菜单栏中选择“文件文件”,单击,单击“新建新建”,再,再选择选
22、择“菜单菜单(或者也可以在或者也可以在“项目管理器项目管理器”窗口中,选择窗口中,选择“其他其他”选项卡,再选择选项卡,再选择“菜单菜单”)。(2 2)单击)单击“新建新建”按钮,屏幕显示按钮,屏幕显示“新建菜单新建菜单”对话框。对话框。(3 3)在)在“新建菜单新建菜单”对话框中,单击对话框中,单击“菜单菜单”按钮,按钮,系统进入系统进入“菜单设计器菜单设计器”窗口。窗口。2.2.利用命令实现:利用命令实现:【命令格式】【命令格式】MODIFY MENU MODIFY MENU 【功能】新建或打开菜单文件,菜单文件的扩展名为【功能】新建或打开菜单文件,菜单文件的扩展名为.MNX.MNX。在在
23、“菜单设计器菜单设计器”窗口中,有窗口中,有4 4项内容,即项内容,即“菜单名称菜单名称”、“结结果果”、“选项选项”、“菜单级菜单级”,以及,以及4 4个按钮,即个按钮,即“插入插入”按钮、按钮、“插入栏插入栏”按钮、按钮、“删除删除”按钮、按钮、“移菜单项移菜单项”按钮、按钮、“预览,分预览,分别说明如下别说明如下:“菜单名称菜单名称”:用于指定显示在菜单系统中的菜单项的菜单标题。:用于指定显示在菜单系统中的菜单项的菜单标题。(“(“菜单名称菜单名称”列左边的双向箭头按钮,用鼠标拖动可以调整各行列左边的双向箭头按钮,用鼠标拖动可以调整各行的顺序。的顺序。)“结果结果”:用于指定在选择菜单项
24、时发生动作类型,包括子菜单、:用于指定在选择菜单项时发生动作类型,包括子菜单、命令或过程。命令或过程。“选项选项”:可进入显示:可进入显示“提示选项提示选项”对话框,可以定义键盘快捷键对话框,可以定义键盘快捷键和其他菜单选择。和其他菜单选择。“菜单级菜单级”:用于选择要处理的菜单栏或子菜单。:用于选择要处理的菜单栏或子菜单。“插入插入”按钮:可在按钮:可在“菜单设计器菜单设计器”窗口中插入新行。窗口中插入新行。“插入栏插入栏”按钮:可在按钮:可在“菜单设计器菜单设计器”窗口中插入系统菜单栏,如包窗口中插入系统菜单栏,如包含新建、打开、关闭、保存等。含新建、打开、关闭、保存等。“删除删除”按钮:
25、可在按钮:可在“菜单设计器菜单设计器”窗口中删除当前行。窗口中删除当前行。“移菜单项移菜单项”按钮:可在按钮:可在“菜单设计器菜单设计器”窗口中移动当前行到正确的窗口中移动当前行到正确的位置。位置。“预览预览”按钮:可显示正在创建的菜单。按钮:可显示正在创建的菜单。3.3.创建下拉菜单创建下拉菜单 菜单项创建好后,可以在菜单上设置下拉菜单项。菜单项创建好后,可以在菜单上设置下拉菜单项。每个菜单项都代表用户执行的过程,菜单项也可以包含每个菜单项都代表用户执行的过程,菜单项也可以包含提供其他菜单项的子菜单。向菜单中添加菜单项的操作提供其他菜单项的子菜单。向菜单中添加菜单项的操作步骤如下:步骤如下:
26、(1 1)在在“菜单设计器菜单设计器”窗口的窗口的“菜单名称菜单名称“栏中,栏中,单击要添加下拉菜单的菜单项。单击要添加下拉菜单的菜单项。(2 2)在在“结果结果”列中,选定列中,选定“子菜单子菜单”命令,使右命令,使右侧出现侧出现“创建创建”按钮。按钮。(3 3)单击单击“创建创建”按钮,屏幕显示按钮,屏幕显示“子菜单子菜单“设计设计窗口,输入菜单项。窗口,输入菜单项。(4 4)在在“菜单名称菜单名称”列中,输入新建的各菜单项的列中,输入新建的各菜单项的名称。名称。4.4.创建子菜单创建子菜单 对于每个菜单项,都可以创建包含其他菜单项的子对于每个菜单项,都可以创建包含其他菜单项的子菜单。创建
27、子菜单的操作步骤如下:菜单。创建子菜单的操作步骤如下:(1 1)在在“菜单名称菜单名称”列中,单击要添加子菜单的菜列中,单击要添加子菜单的菜单项。单项。(2 2)在在“结果结果”列中,选择列中,选择“子菜单子菜单”,使,使“创建创建”按钮出现在列表的右侧。如果已经有了子菜单,则此处按钮出现在列表的右侧。如果已经有了子菜单,则此处出现的是出现的是“编辑编辑”按钮。按钮。(3 3)单击单击“创建创建”按钮或按钮或“编辑编辑”按钮。按钮。(4 4)在在“菜单名称菜单名称”列中,输入新建的各子菜单项列中,输入新建的各子菜单项的名称。的名称。5.5.设计菜单组的分隔线设计菜单组的分隔线 为了增加菜单的可
28、读性,可使用分隔线,将功能相为了增加菜单的可读性,可使用分隔线,将功能相似的菜单项分隔成组,操作步骤如下:似的菜单项分隔成组,操作步骤如下:(1 1)在在“菜单名称菜单名称”列中,输入列中,输入“-”-”来取代菜来取代菜单项。单项。(2 2)拖动拖动“-”-”提示符左侧的按钮,将分隔线移提示符左侧的按钮,将分隔线移动到所希望的位置。动到所希望的位置。6.6.指定键盘访问键指定键盘访问键设计良好的菜单都应具有访问键,此功能使设计良好的菜单都应具有访问键,此功能使用户通过键盘快速地访问菜单。为菜单或菜单项用户通过键盘快速地访问菜单。为菜单或菜单项指定访问键的方法为:只需在希望成为访问键的指定访问键
29、的方法为:只需在希望成为访问键的字母左侧输入字母左侧输入“”。例如,在。例如,在“菜单名称菜单名称”列列中,将中,将“文件(文件(F F)”菜单使用菜单使用“F”F”作为键盘访作为键盘访问键,只需在问键,只需在“菜单名称菜单名称”中加入中加入“F”F”,键盘,键盘访问键在菜单或下拉菜单项上用带下划线的大写访问键在菜单或下拉菜单项上用带下划线的大写字母表示。然后按下字母表示。然后按下ALTALTF F键,即可激活文件菜键,即可激活文件菜单项目。如果没有为某个菜单栏或下拉菜单项指单项目。如果没有为某个菜单栏或下拉菜单项指定访问键,将自动指定第一个字母作为键盘访问定访问键,将自动指定第一个字母作为键
30、盘访问键。键。7.7.添加快捷键添加快捷键 除了指定键盘访问键以外,还可以为菜单或下拉菜单项指定键盘除了指定键盘访问键以外,还可以为菜单或下拉菜单项指定键盘快捷键。菜单的快捷键提供了键盘直接执行菜单命令的方法。如同键快捷键。菜单的快捷键提供了键盘直接执行菜单命令的方法。如同键盘访问键一样,使用键盘快捷键,可以提高选择菜单项的速度。使用盘访问键一样,使用键盘快捷键,可以提高选择菜单项的速度。使用快捷键可以在不显示菜单的情况下,选择此菜单上的某个菜单项。快捷键可以在不显示菜单的情况下,选择此菜单上的某个菜单项。键盘快捷键一般用键盘快捷键一般用CtrlCtrl或或AltAlt键与另一个键相结合。例如
31、,按键与另一个键相结合。例如,按Ctrl+NCtrl+N可在可在VFPVFP中创建新文件。为菜单或菜单项指定键盘快捷键的操作中创建新文件。为菜单或菜单项指定键盘快捷键的操作步骤如下:步骤如下:(1 1)在在“菜单名称菜单名称”栏中,选择相应的菜单标题或菜单项。栏中,选择相应的菜单标题或菜单项。(2 2)单击单击“选项选项”栏下的按钮,屏幕将显示栏下的按钮,屏幕将显示“提示选项提示选项”对话框。对话框。(3 3)在在“键标签键标签”框中,按下一个组合键,此时在框中,按下一个组合键,此时在“键标签键标签”和和“键说明键说明”框中,都会显示所按下的快捷键。框中,都会显示所按下的快捷键。例如,选择例如
32、,选择“文件文件”菜单下的菜单下的“新建新建”子菜单项,按下子菜单项,按下Ctrl+NCtrl+N即可。即可。(4 4)选择选择“跳过跳过”框并输入表达式,此表达式将用框并输入表达式,此表达式将用于确定是启动还是停止菜单或菜单项。如果此表达式取值于确定是启动还是停止菜单或菜单项。如果此表达式取值为为“假假”(.F.F.),则废止菜单或菜单项。如果此表达式),则废止菜单或菜单项。如果此表达式取值为取值为“真真”(.T.T.),则启用菜单或菜单项。),则启用菜单或菜单项。显示菜单系统后,可以使用显示菜单系统后,可以使用SET SKIP OFFSET SKIP OFF命令,控制命令,控制启动或废止菜
33、单及菜单项。启动或废止菜单及菜单项。10.2.2 10.2.2 菜单的修改及保存菜单的修改及保存 菜单创建完成后,难免有不妥之处,此时可以使用菜单菜单创建完成后,难免有不妥之处,此时可以使用菜单设计器,删除菜单项、增加菜单项或移动菜单项。设计器,删除菜单项、增加菜单项或移动菜单项。1.1.删除菜单项删除菜单项删除菜单项的操作步骤如下:删除菜单项的操作步骤如下:(1 1)在在“菜单设计器菜单设计器”窗口的菜单列表中,选中要删除窗口的菜单列表中,选中要删除的菜单项。单击的菜单项。单击“删除删除”按钮,或选择按钮,或选择“菜单菜单”的下拉菜的下拉菜单的单的“删除菜单项删除菜单项”命令。命令。(2 2
34、)在在“系统提示系统提示”对话框中,单击对话框中,单击“是是”按钮,则选按钮,则选中的菜单项被删除。中的菜单项被删除。(3 3)选择选择“文件文件”菜单中的菜单中的“保存保存”选项,可以把选项,可以把改过的菜单项保存到菜单中。改过的菜单项保存到菜单中。2.2.增加菜单项增加菜单项增加菜单项的操作步骤如下:增加菜单项的操作步骤如下:(1 1)单击单击“菜单名称菜单名称”列中的任意一菜单项。列中的任意一菜单项。(2 2)单击右侧单击右侧“菜单项菜单项”中的中的“插入插入”按钮,就可以插按钮,就可以插入一个菜单项。入一个菜单项。(3 3)把插入的菜单项保存到菜单中,选择把插入的菜单项保存到菜单中,选
35、择“文件文件”菜单菜单中的中的“保存保存”选项就可以了。选项就可以了。3.3.移动菜单项移动菜单项移动菜单项的操作步骤如下:移动菜单项的操作步骤如下:(1 1)单击单击“菜单名称菜单名称”列中的任意一菜单项。列中的任意一菜单项。(2 2)单击右侧单击右侧“菜单项菜单项”中的中的“移菜单项移菜单项”按钮,出现按钮,出现“移菜单项移菜单项”对话框。对话框。(3 3)在在“移放位置移放位置”的下拉列表框中选择将要移到的菜的下拉列表框中选择将要移到的菜单项位置,最后单击单项位置,最后单击“确定确定”按钮。按钮。4 4 保存菜单保存菜单 保存菜单就是将菜单存为磁盘文件,文件名的后缀是保存菜单就是将菜单存
36、为磁盘文件,文件名的后缀是.MNX.MNX。编译。编译文件名的后缀是文件名的后缀是.MPX.MPX。执行文件名的后缀是。执行文件名的后缀是.MPR.MPR。保存后的菜单可以。保存后的菜单可以像使用应用程序一样使用它。保存菜单的操作步骤如下:像使用应用程序一样使用它。保存菜单的操作步骤如下:(1 1)单击)单击“文件文件”菜单项中的菜单项中的“保存保存”选项,屏幕显示选项,屏幕显示“另存为另存为”对话框。对话框。(2 2)在)在“另存为另存为”对话框中,选定要保存的目录,再输入要保存的对话框中,选定要保存的目录,再输入要保存的文件名,例如文件名,例如D D:VFP1VFP1菜单菜单1.mnx1.
37、mnx。(3 3)单击)单击“保存保存“按钮,则菜单被保存(若是在按钮,则菜单被保存(若是在“项目管理器项目管理器”中中新建的,则被加到新建的,则被加到“项目管理器项目管理器”窗口的窗口的“菜单菜单”项中,单击其前面项中,单击其前面的的“+”+”可以看到此菜单的文件名)。可以看到此菜单的文件名)。(4 4)在)在“菜单菜单”菜单中,选择菜单中,选择“生成生成”命令,屏幕显示命令,屏幕显示“生成菜单生成菜单”对话框,单击对话框,单击“生成生成”按钮,就会生成扩展名为按钮,就会生成扩展名为.MPR.MPR的菜单程序文件。的菜单程序文件。如果是在如果是在“项目管理器项目管理器”窗口中创建的菜单,那么
38、选择窗口中创建的菜单,那么选择“运行运行”命令,就可以运行菜单程序。命令,就可以运行菜单程序。10.2.3 10.2.3 创建及运行菜单创建及运行菜单 1.用“快速菜单”创建菜单 创建菜单可以通过定制已有的VFP菜单系统,或者开发自己的菜单系统来实现。要从已有的VFP菜单系统开始创建菜单,必须使用“快速菜单”功能。VFP的“快速菜单”是在“菜单”的下拉菜单中的一个选项。它以系统菜单为模板,使用它可以把VFP加载到空的菜单设计器中。在菜单设计器中,在系统菜单基础上进行修改设计,可以方便快速地完成菜单设计。使用“快速菜单”命令,创建菜单的操作步骤如下:(1)在VFP系统菜单栏中选择“文件”,单击“
39、新建”(或者也可以在“项目管理器”窗口中,选择“其他”选项卡)。(2)选定“菜单“选项。(3)单击“新建”按钮,屏幕显示“新建菜单”对话框,单击“菜单”按钮,屏幕显示“菜单设计器”窗口,默认的菜单名是“新菜单项”。(4 4)在主菜单项中,单击)在主菜单项中,单击“快速菜单快速菜单”命令,即把命令,即把VFPVFP系统菜单加到系统菜单加到“菜单设计器菜单设计器”窗口中。窗口中。“菜单名称菜单名称”列是菜单栏的菜单项,菜单项中括号里列是菜单栏的菜单项,菜单项中括号里放的是键盘访问键字母,其先导字符是放的是键盘访问键字母,其先导字符是“”。“结果结果”列都是列都是“子菜单子菜单”,表明这些菜单项下挂
40、的,表明这些菜单项下挂的都是子菜单。按都是子菜单。按“编辑编辑”按钮,可编辑修改子菜单。按钮,可编辑修改子菜单。“菜单设计器菜单设计器”窗口中的当前行的窗口中的当前行的“结果结果”是一个下是一个下拉列表框,有拉列表框,有4 4种可选项:种可选项:如果选择如果选择“命令命令”或或“主菜单名主菜单名”,则在,则在“结果结果”之之后出现文本框,可在其中输入命令或填写菜单名称。后出现文本框,可在其中输入命令或填写菜单名称。如果选择如果选择“子菜单子菜单”或或“过程过程”,则在,则在“结果结果”列之列之后出现后出现“创建创建”按钮,如果已经创建,则出现按钮,如果已经创建,则出现“编辑编辑”按按钮。钮。如
41、果要改变菜单上各菜单的位置,则拖动如果要改变菜单上各菜单的位置,则拖动“移动移动”按按钮。钮。(5 5)将)将“菜单设计器菜单设计器”窗口中的第一行设为当前行。窗口中的第一行设为当前行。(6 6)单击)单击“编辑编辑”按钮,可使菜单设计器进入子菜单进按钮,可使菜单设计器进入子菜单进行编辑。行编辑。例如,例如,“文件文件”子菜单的各菜单项的内容。子菜单的各菜单项的内容。注意到注意到“结果结果”下拉列表框中的内容和菜单栏略有下拉列表框中的内容和菜单栏略有不同:没有不同:没有“填充名称填充名称”,而有,而有“菜单项菜单项”。这里。这里“结果结果”栏中的栏中的“菜单项菜单项”右边是菜单项的名称,表右边
42、是菜单项的名称,表示示“菜单项菜单项”这个子菜单将利用数字来辨识选取的是这个子菜单将利用数字来辨识选取的是哪一个选项。哪一个选项。快速生成的菜单和系统菜单相同,其中的功能项可快速生成的菜单和系统菜单相同,其中的功能项可以增加、修改或删除。这些操作,都可以在以增加、修改或删除。这些操作,都可以在“菜单设计菜单设计器器”窗口中进行。在进一步设计之前,一定要先保存此窗口中进行。在进一步设计之前,一定要先保存此菜单。菜单。在命令窗口输入:在命令窗口输入:MODIFY MENU CDMODIFY MENU CD 出现新建菜单对话框,单击出现新建菜单对话框,单击“菜单菜单”按钮,弹出菜单按钮,弹出菜单设计
43、器,利用菜单设计器可以对菜单进行编辑。设计器,利用菜单设计器可以对菜单进行编辑。(1 1)单击)单击“菜单菜单”菜单,选择菜单,选择“快速菜单快速菜单”,可将当前系,可将当前系统菜单添加到菜单设计器中。统菜单添加到菜单设计器中。(2 2)插入一个)插入一个“修改修改”菜单,访问键定为菜单,访问键定为“B”B”,结果的,结果的下拉菜单中的选项有命令、填充名称、子菜单、过程,可下拉菜单中的选项有命令、填充名称、子菜单、过程,可根据需要选择。此处选命令,在输入框中输入根据需要选择。此处选命令,在输入框中输入BROWSEBROWSE。(3 3)生成菜单程序。单击)生成菜单程序。单击“菜单菜单”菜单,选
44、择菜单,选择“生成生成”,出现菜单保存对话框。出现菜单保存对话框。(4 4)单击)单击“是是”按钮,弹出生成菜单对话框,单击按钮,弹出生成菜单对话框,单击“生成生成”按钮。按钮。【例【例10.110.1】建立一个名为】建立一个名为CD.MNXCD.MNX的菜单文件。要求的菜单文件。要求 在当前系统菜单中插入一个修改菜单。在当前系统菜单中插入一个修改菜单。2.2.运行菜单程序运行菜单程序【命令格式】【命令格式】DODO菜单程序名菜单程序名【功能】运行菜单程序。运行时需加菜单程序的扩展【功能】运行菜单程序。运行时需加菜单程序的扩展名名.MPR.MPR。【例【例10.210.2】运行】运行CD.MP
45、RCD.MPR程序,并用菜单对程序,并用菜单对TEACHERTEACHER表进表进行修改。在命令窗口输入:行修改。在命令窗口输入:DO CD.MPR DO CD.MPR USE TEACHERUSE TEACHERAlt+B Alt+B 10.2.410.2.4向菜单添加清理代码向菜单添加清理代码 当程序运行时,会发现菜单不能停留在屏幕上,这是因为菜单中当程序运行时,会发现菜单不能停留在屏幕上,这是因为菜单中没有循环代码等待用户操作,为了让菜单能停留在屏幕上等待用户选没有循环代码等待用户操作,为了让菜单能停留在屏幕上等待用户选择,需要在菜单的择,需要在菜单的“清理清理”代码中加入代码代码中加入
46、代码READREADEVENTSEVENTS。向菜单系。向菜单系统添加清理代码的操作步骤如下:统添加清理代码的操作步骤如下:(1 1)打开要添加事件代码的菜单文件,系统进入打开要添加事件代码的菜单文件,系统进入“菜单设计器菜单设计器”窗窗口。口。(2 2)在在“显示显示”菜单中,选择菜单中,选择“常规选项常规选项”命令,屏幕显示命令,屏幕显示“常规常规选项选项”对话框。对话框。(3 3)在在“菜单代码菜单代码”区域,选择区域,选择“清理清理”复选框,打开代码窗口。复选框,打开代码窗口。(4 4)在在“常规选项常规选项”对话框中,单击对话框中,单击“确定确定”按钮,激活按钮,激活VFPVFP为清
47、为清理代码显示的独立窗口。理代码显示的独立窗口。(5 5)在清理代码窗口中,输入正确的清理代码,例如,输入在清理代码窗口中,输入正确的清理代码,例如,输入READ READ EVENTS EVENTS 命令,并按命令,并按Ctrl+WCtrl+W存盘退出,作为应用程序中主程序的菜单。存盘退出,作为应用程序中主程序的菜单。(6 6)关闭此窗口,返回到关闭此窗口,返回到“菜单设计器菜单设计器”窗口。保存窗口。保存菜单系统时,菜单系统时,VFPVFP同时保存清理代码。同时保存清理代码。【说明【说明】为了保证菜单系统的正常退出,在清理代码窗口中,为了保证菜单系统的正常退出,在清理代码窗口中,必须输入必
48、须输入READ EVENTSREAD EVENTS命令,并按命令,并按Ctrl+WCtrl+W存盘退出。存盘退出。创建和运行菜单程序时,清理代码要紧跟在初始化代创建和运行菜单程序时,清理代码要紧跟在初始化代码及菜单定义代码之后,而在为菜单或菜单项指定的过程码及菜单定义代码之后,而在为菜单或菜单项指定的过程代码之前。代码之前。通过向菜单系统添加清理代码类,可剪裁菜单系统,通过向菜单系统添加清理代码类,可剪裁菜单系统,典型的清理代码包含初始时启用或废止菜单及菜单项的代典型的清理代码包含初始时启用或废止菜单及菜单项的代码码。10.3 10.3 弹出式菜单设计弹出式菜单设计 在在Windows Win
49、dows 程序中,在对象上单击鼠标右键,便会程序中,在对象上单击鼠标右键,便会出现关于这个对象的菜单操作。这种菜单给用户带来了出现关于这个对象的菜单操作。这种菜单给用户带来了极大的方便。在极大的方便。在VFPVFP中同样可以建立这样的快捷菜单。中同样可以建立这样的快捷菜单。快捷菜单一般在表单中使用。快捷菜单一般在表单中使用。一般来说,下拉式菜单作为一个应用程序的菜单系一般来说,下拉式菜单作为一个应用程序的菜单系统,列出了整个应用程序所具有的功能。而快捷菜单一统,列出了整个应用程序所具有的功能。而快捷菜单一般从属于某个界面对象,当用鼠标右击该对象时,就会般从属于某个界面对象,当用鼠标右击该对象时
50、,就会在单击对象处弹出快捷菜单,快捷菜单通常列出与处理在单击对象处弹出快捷菜单,快捷菜单通常列出与处理相应对象有关的一些功能命令。相应对象有关的一些功能命令。10.2.410.2.4向菜单添加清理代码向菜单添加清理代码1.1.利用界面操作创建弹出式菜单利用界面操作创建弹出式菜单 在新建菜单对话框中,单击快捷菜单按钮,弹出快捷菜在新建菜单对话框中,单击快捷菜单按钮,弹出快捷菜单设计器。利用快捷菜单设计器来设计快捷菜单。单设计器。利用快捷菜单设计器来设计快捷菜单。设计快捷菜单的操作步骤如下:设计快捷菜单的操作步骤如下:(1 1)在在VFPVFP系统菜单栏中选择系统菜单栏中选择“文件文件”,单击,单