isualFVoxPro5.1菜单设计概述5.2下拉式菜单设计5.3为顶层表单添加菜单5.4快捷菜单设计5.1.1菜单的结构VisualFoxPro支持两种类型的菜单:条形菜单(一级菜单)和弹出式菜单(子菜单)。它们都有一组菜单选项显示于屏幕供用户选择。用户选择其中的某个选项时都会有一定的动作。这个动作可以是下面3种情况中的一种:执行一条命令、执行一个过程或激活另一个菜单。每一个菜单选项都可以有选择地设置一个热键和快捷键。热键通常是一个字符,当菜单激活时,可以按菜单项的热键快速选择该菜单项。快捷键通常是Ctrl和另一个字符键组成的组合键。不管菜单激活与否,都可以通过快捷键选择相应的菜单选项。5.1菜单设计概述常规的菜单系统一般是一个下拉式菜单,由一个条形菜单和一组弹出式菜单组成。其中条形菜单作为主菜单,弹出式菜单作为子菜单。当选择一个条形菜单选项时,激活相应的弹出式菜单。而快捷菜单一般由一个或一组上下级的弹出式菜单组成。在VisualFoxPro中,可以利用“菜单设计器”来设计并生成下拉式菜单与快捷菜单。若想从已有的VisualFoxPro菜单系统开始创建菜单,则可以使用“快速菜单”功能。5.1.2建立菜单系统的步骤不管应用程序的规模多大,打算使用的菜单多么复杂,创建菜单系统都需以下步骤:(1)规划与设计菜单系统。确定需要哪些菜单项、菜单项出现在界面的什么位置、哪些菜单要有子菜单、哪些菜单要执行相应的操作等。(2)建立菜单项和子菜单。使用菜单设计器可以定义菜单标题、菜单项和子菜单。(3)按实际要求为菜单系统指定任务。指定菜单所要执行的任务,例如显示表单或对话框等。菜单建立好之后将生成一以.mnx为扩展名的菜单文件和以.mnt为扩展名的菜单备注文件。(4)利用已建立的菜单文件,生成扩展名为.mpr的菜单程序文件。(5)运行生成的菜单程序文件。5.1.3系统菜单的控制VisualFoxPro系统菜单是一个典型的菜单系统,其主菜单是一个条形菜单。选择条形菜单中的每一个菜单项都会激活一个弹出式菜单。在VisualFoxPro中,每一个条形菜单都有一个内部名字和一组菜单选项,每个菜单选项都有一个名称(标题)和内部名字。例如,VisualFoxPro主菜单的内部名字为_MSYSMENU,条形菜单项“文件”、“编辑”和“窗口”的内部名字分别为_MSM_FILE,_MSM_EDIT,_MSM_WINDOW。每一个弹出式菜单也有一个内部名字和一组菜单选项,每个菜单选项则有一个名称(标题)和选项序号。例如,_MFILE,_MEDIT,_MWINDOW为弹出式菜单项“文件”、“编辑”和“窗口”的内部名。菜单项的名称用于在屏幕上显示菜单系统,而内部名字或选项序号则用于在程序代码中引用。通过SETSYSMENU命令可以允许或禁止在程序执行时访问系统菜单,也可以重新设置系统菜单。命令格式是:SETSYSMENUON|OFF|AUTOMATIC|TO[弹出式菜单名表]|TO[条形菜单项名表]|TO[DEFAULT]|SAVE|NOSAVE其中:ON允许程序执行时访问系统菜单,OFF禁止程序执行时访问系统菜单,AUTOMATIC可使系统菜单显示出来,可以访问系统菜单。TO子句用于重新设置系统菜单。“TO[弹出式菜单名表]”以菜单项内部名字列出可用的弹出式菜单。例如,命令SETSYSMENUTO_MFILE,_MEDIT将使系统菜单只保留“文件”和“编辑”两个子菜单。“TO[条形菜单项名表]”以条形菜单项内部名字列出可用的子菜单。例如,上面的系统菜单设置命令也可以写成SETSYSMENUTO_MSM_FILE,_MSM_EDIT。“TO[DEFAULT]”将系统菜单恢复为缺省配置。SAVE将当前系统菜单配置指定为缺省配置,NOSAVE将缺省设置恢复成VisualFoxPro系统的标准配置。要将系统菜单恢复成标准设置,可先执行SETSYSMENUNOSAVE命令,然后执行SETSYSMENUTODEFAULT命令。不带参数的SETSYSMENUTO命令将屏蔽系统菜单,使系统菜单不可用。打开菜单设计器窗口无论建立菜单或者修改已有的菜单,都需要打开菜单设计器窗口。操作方法是:在VisualFoxPro系统主菜单下,从“文件”菜单中选择“新建”菜单项。打开“新建”对话框后,选择“菜单”单选按钮,然后单击“新建文件”按钮,屏幕上出现“新建菜单”对话框。此时若选“菜单”按钮,将进入菜单设计器窗口。CREATEMENU菜单文件名打开和新建菜单的命令格式为:MODIFYMENU菜单文件名5.2下拉式菜单设计5.3为顶层表单添加菜单一般情况下,使用“菜单设计器”设计的菜单,是在VisualFoxPro的窗口中运行的,也就是说,用户菜单不是在窗口的顶层,而是在第二层,因为“MicrosoftVisualFoxPro”标题一直都被显示。要去掉“MicrosoftVisualFoxPro”标题并换成用户指定的标题,可以通过顶层表单的设计来实现,基本思路是:(1)首先建立一个下拉式菜单文件。设计菜单时,在“常规选项”中,选中“顶层表单”复选框,然后生成菜单程序文件。(2)创建一个表单,将表单的ShowWindow属性值设为2,使该表单成为顶层表单。然后在表单的Init事件代码中添加如下代码:DO菜单程序名WITHTHIS,.T.其中菜单程序名指定被调用的菜单程序文件,其扩展名.mpr不能省略。快捷菜单是一种单击右键才出现的弹出式菜单,利用“快捷菜单设计器”仅能生成快捷菜单的菜单本身,实现单击右键来弹出一个菜单的动作还需要编程。5.4快捷菜单设计例建立一个具有“撤消”和“剪贴板”功能的快捷菜单,供浏览学生表时使用。当用户在浏览窗口单击鼠标右键时,即出现此快捷菜单。操作步骤如下:(1)打开快捷菜单设计器窗口在VisualFoxPro系统主菜单下,从“文件”菜单中选择“新建”菜单选项,打开“新建”对话框后,选择“菜单”单选按钮,然后单击“新建文件”按钮,屏幕上出现“新建菜单”对话框。在“新建菜单”对话框中,选择“快捷菜单”按钮,进入“快捷菜单设计器”窗口。(2)插入系统菜单栏在快捷菜单设计器窗口中,选择“插入栏”按钮,进入“插入系统菜单栏”对话框,在“插入系统菜单栏”对话框中选择“粘贴”选项,并单击“插入”按钮,类似地插入“复制”、“剪切”、“撤消”等选项,最后单击“关闭”按钮返回到快捷菜单设计器窗口。(3)生成菜单程序打开“菜单”菜单,选择“生成”命令,在保存文件时,将菜单文件主名取为lppcd,于是菜单保存在菜单文件lppcd.mnx和菜单备注文件lppcd.mnt中。在“生成菜单”对话框中选择“生成”按钮,就会生成菜单程序lppcd.mpr。(4)编写调用程序在命令窗口中输入:MODICOMMdylppcd命令,并在程序编辑窗口中输入如下代码:CLEARALLPUSHKEYCLEAR&&清除以前设置过的功能键ONKEYLABELRIGHTMOUSEDOlppcd.mpr&&设置鼠标右键为功能键,预置弹出式菜单USE学生BROWSEUSEPUSHKEYCLEAR(5)行调用程序及快捷菜单程序执行命令:DOdylppcd,屏幕上就会出现浏览窗口。选择任何数据后,单击右键随即弹出快捷菜单,便可进行撤消、剪切、复制、粘贴等操作。