380 likes | 555 Views
第八章 菜单设计与应用 . 1. Visual FoxPro 系统菜单. 2. 菜单设计. 3. 快捷菜单设计. 目录. 8.1 Visual FoxPro 系统菜单 . 在 Windows 环境下,常见的菜单类型有两种:下拉式菜单和快捷菜单。 一、下拉式菜单 一般是由一个称作“主菜单”的条形菜单栏和一组称作“子菜单”的下拉式菜单组成。 条形菜单栏一般位于应用程序窗口的标题栏的下方,是一个启动应用程序后始终都可以看到的菜单名列表栏。菜单栏中的每个菜单名代表一个主菜单项,每一个主菜单项可以直接对应一个命令或过程。
E N D
1 Visual FoxPro系统菜单 2 菜单设计 3 快捷菜单设计 目录 Visual FoxPro程序设计
8.1Visual FoxPro系统菜单 • 在Windows环境下,常见的菜单类型有两种:下拉式菜单和快捷菜单。 • 一、下拉式菜单 • 一般是由一个称作“主菜单”的条形菜单栏和一组称作“子菜单”的下拉式菜单组成。 • 条形菜单栏一般位于应用程序窗口的标题栏的下方,是一个启动应用程序后始终都可以看到的菜单名列表栏。菜单栏中的每个菜单名代表一个主菜单项,每一个主菜单项可以直接对应一个命令或过程。 • 通常,每一个主菜单项对应有一个下拉菜单作为它的子菜单,子菜单中包含了一组菜单选项。子菜单中的每个菜单项可直接对应一条命令,也可对应于下一级子菜单,子菜单里又可以包含一组相关的菜单项,从而形成一种级联的菜单结构。 8.1.1 菜单结构 Visual FoxPro程序设计
8.1.1 菜单结构 • 在子菜单中,对功能上密切相关的菜单项可以放置分隔线划分菜单选项的组别。菜单项一般都有一个热键,用括号中带下划线的字母表示,同时按ALT键和带下划线的字母键即可下拉出所代表的菜单。快捷键通常是Ctrl键和另一个字符键组成的组合键,不论菜单是否激活,都可以通过快捷键选择相应的菜单项。如图8-1所示。 图8-1VFP系统菜单 Visual FoxPro程序设计
8.1.1 菜单结构 • 二、快捷菜单 • 当鼠标指针指向某个界面对象单击鼠标右键,通常会弹出一个快捷菜单,列出针对当前对象的各种可用命令,免除了在主菜单中一一查找的麻烦。快捷菜单一般只有一个弹出式菜单。菜单组中的每个菜单项可直接对应于一条命令,也可对应于一个级联子菜单。图8-2 是在VFP命令窗口右击时弹出的快捷菜单,其中列出了与命令窗口操作有关的命令项。 图8-2 快捷菜单 Visual FoxPro程序设计
8.1.2 系统菜单 • Visual FoxPro系统菜单是一个典型的菜单系统,其主菜单是一个条形菜单。选择条形菜单中的每一个菜单项都会弹出一个下拉菜单。 • 在Visual FoxPro中,每一个条形菜单都有一个内部名字和一组菜单选项,每个菜单选项都有一个名称(标题)和内部名字。例如,Visual FoxPro主菜单的内部名字为_MSYSMENU,条形菜单项“文件”、“编辑”和“窗口”的内部名字分别为_MSM_FILE,_MSM_EDIT,_MSM_WINDOW。 • 每一个弹出式菜单也有一个内部名字和一组菜单选项,每个菜单选项则有一个名称(标题)和选项序号。例如,_MFILE,_MEDIT,_MWINDOW为弹出式菜单项“文件”、“编辑”和“窗口”的内部名字。菜单项的名称用于在屏幕上显示菜单系统,而内部名字或选项序号则用于在程序代码中引用。 Visual FoxPro程序设计
8.1.2 系统菜单 • 通过SET SYSMENU命令可以允许或禁止在程序执行时访问系统菜单,也可以重新设置系统菜单。 • 命令格式: • SET SYSMENU ON|OFF|AUTOMATIC |TO [<弹出式菜单名表>]|TO [<条形菜单项名表>]|TO [DEFAULT]|SAVE|NOSAVE • 其中: • ON允许程序执行时访问系统菜单; • OFF禁止程序执行时访问系统菜单; • AUTOMATIC可使系统菜单显示出来,可以访问系统菜单; • TO子句用于重新设置系统菜单:“TO [<弹出式菜单名表>]”以菜单项内部名字列出可用的弹出式菜单,“TO [<条形菜单项名表>]”以条形菜单项内部名字列出可用的子菜单,“TO [DEFAULT]”将系统菜单恢复为缺省配置; • SAVE将当前系统菜单配置指定为缺省配置; • NOSAVE将缺省设置恢复成Visual FoxPro系统的标准配置。 Visual FoxPro程序设计
8.1.2 系统菜单 • 【例8-1】要求仅保留Visual FoxPro系统菜单的“文件”、“工具”、“窗口”和“格式“菜单,其他选项从系统菜单中移去。 • 在命令窗口输入以下命令并执行,执行后系统菜单显示效果如图8-3所示。 • 命令序列: • SET SYSMENU TO _MFILE,_MTOOLS,_MWINDOW,_MSM_TEXT 图8-3 设置后的菜单窗口 Visual FoxPro程序设计
8.1.2 系统菜单 • 【例8-2】将系统菜单恢复成标准菜单。 • 命令序列: • SET SYSMENU NOSAVE • SET SYSMENU TO DEFAULT • 逐条执行上述命令后,系统菜单将恢复成标准设置。 • 【例8-3】从“文件”菜单项的下拉菜单中移去“新建”和“打开”菜单项。 • 通过RELAEASE BAR命令可以从指定的菜单中移去指定的菜单项。 • 命令格式:RELEASE BAR <下拉菜单项名> OF <菜单项名> • 命令序列: • RELEASE BAR _MFI_NEW OF _MFILE • RELEASE BAR _MFI_OPEN OF _MFILE • 逐条执行上述命令后,“文件”菜单项的下拉菜单中移去了“新建”和“打开”两个菜单项。 Visual FoxPro程序设计
8.2菜单设计 • 开发一个应用程序通常都需要创建自己的菜单系统。不管应用程序的规模多大,打算使用的菜单多么复杂,创建菜单系统都需要以下步骤: • 第1步:规划与设计系统:确定需要哪些菜单、出现在界面的何处以及哪几个菜单要有子菜单等等。 • 第2步:创建菜单和子菜单:使用菜单设计器可以定义菜单标题、菜单项和子菜单。 • 第3步:按实际要求为菜单系统指定任务:指定菜单所要执行的任务,例如显示表单或对话框等。另外,如果需要,还可以包含初始化代码和清理代码。初始化代码在定义菜单系统之前执行,其中可以打开文件;声明变量;或将菜单系统保存到堆栈中,以便可以在后面的程序执行中恢复。清理代码中包含的代码在菜单的定义代码之后执行,使菜单和菜单项可用或不可用。 • 第4步:生成菜单程序。 • 第5步:运行生成的程序,测试菜单系统。 Visual FoxPro程序设计
8.2.1 菜单设计器 • 要创建用户的菜单系统,可以使用菜单设计器。 • 进入菜单设计器的方法有多种,最简单的方法是:从“文件”菜单中,选择“新建”菜单项,得到新建对话框,选中“菜单”单选按钮,单击“新建文件”按钮进入菜单设计器窗口,如图8-5所示。 图8-5 “菜单设计器”对话框 Visual FoxPro程序设计
8.2.1 菜单设计器 • 菜单设计器窗口主要由以下几部分组成: • (1)菜单名称 • 该列用于指定各菜单项的标题名称及菜单项的访问键。例如:定义一个标题名为“文件”的菜单项,并设置其访问键为F键,可在菜单名栏中输入“文件(\<F)”。 • 要用分隔线功能将相关的菜单项分别成线,在“菜单名称”栏中键入“\-”,便可创建一条分隔线。 • 此外,在每个菜单项的前面有一个小方块按钮,当鼠标移动到它的上面时形状会变成上下双箭头的样子。这个按钮是标准的移动指示器,用鼠标上下拖动它可以改变当前菜单项在菜单列表中的位置。 Visual FoxPro程序设计
8.2.1 菜单设计器 • (2)结果 • 该列用于指定激活菜单项时的动作,有以下4个选项: • ①子菜单:如果用户所定义的当前菜单项还有子菜单的话应选择这一项。当选中该项后,在其右侧将出现一“创建”按钮,单击“创建”按钮后将进入新的一屏来设计子菜单。 • ②命令:如果当前菜单项的功能是执行某种动作的话应选择这一项。当选中该项后,在其右侧出现一文本框,在这个文本框中输入要执行的命令。这个选项仅对应于执行一条命令或调用其他程序的情况。如果所要执行的动作需多条命令完成,而又无相应的程序可用,那么在这里应该选择“过程”。 • ③主菜单名/菜单项#:主菜单名项出现在定义主菜单时,菜单项#出现在定义子菜单项时。当选中这一项时,在其右侧出现一文本框,用户可在文本框输入一个名字。选择这一项的目的主要是为了在程序中引用它。例如,利用它来设计动态菜单。如果用户不选择这一项,系统也会为各个主菜单和子菜单指定一个名称的,只是用户不知道而已。 • ④过程:用于定义一个与菜单相关联的过程,当用户选择了该菜单项后将执行这个过程。如果选择了这项,在其右侧将出现一“创建”按钮,按下该按钮将调出编辑窗口供输入过程代码。 Visual FoxPro程序设计
8.2.1 菜单设计器 • (3)选项 • 单击该按钮将弹出“提示选项”对话框,如图8-6所示。 • 通过提示选项对话框用户可以设置菜单中的各菜单项的属性。比如定义菜单项的快捷键,控制如何禁止或允许使用菜单项,选中的菜单项时在系统状态条上是否显示对菜单项的说明信息,指定菜单项的名字以及在编辑OLE对象期间控制菜单项的位置等。该对话框主要有以下选项: 图8-6 “提示选项”对话框 Visual FoxPro程序设计
8.2.1 菜单设计器 • ①“快捷方式”选项区域:该区用于指定菜单或菜单项的快捷键。其中“键标签”文本框用于显示键组合。设置快捷键的方法是:将光标置于“键标签”文本框中,然后在键盘上按下快捷键,文本框中便会自动显示该快捷键名称。例如按下Crtl+R键,文本框中就出现Crtl+R键。“键说明”用于显示需要出现在菜单项旁边的文本,用作对快捷键的说明,文本框中的内容通常与用户设置的快捷键名称相同。 • ②“位置”选项区域:在该区域可指定用户在应用程序中编辑一个OLE对象时菜单项的位置。有“无”、“左”“中”“右”多个选项。 • ③“跳过”编辑框:设置一个表达式作为允许或禁止菜单项的条件。当菜单激活时,若表为真,则菜单项以灰色显示,表示当前不可用。 • ④“信息”编辑框:定义菜单项的说明信息。当选中了该菜单项后,这些信息将出现在VFP的系统状态条上。 • ⑤“主菜单名/菜单项#”编辑框:指定主菜单项的内部名称或子菜单项的序号。默认情况下,各菜单项无固定的名称,系统在生成菜单时将给出一个随机的名称或序号。 • ⑥“备注”编辑框:在这里输入对菜单项的注释。不过这里的注释不会影响到生成的菜单程序代码,在运行菜单程序时VFP将忽略所有的注释。 Visual FoxPro程序设计
8.2.1 菜单设计器 • (4)“菜单级”下拉列表 • 这个弹出列表显示当前所处的菜单级别。当菜单的层次较多时利用这一项可知道当前的位置。从子菜单返回上面任意一级菜单也要使用这一项。 • (5)“预览”按钮 • 使用这个按钮可以预览当前定义的菜单,该菜单出现在原来系统菜单的地方。可在所显示的菜单中进行选择,检查菜单的层次关系及提示等是否正确,但是这种选择不会执行各菜单相应动作。 • (6)“插入” • 单击该按钮可以在当前菜单的前面插入一新的菜单项。 • (7)“插入栏”按钮 • 进行菜单设计器界面后,该按钮被激活,用于插入一个VFP系统菜单项。单击此按钮,打开“插入系统菜单条”对话框,其中列出了各种VFP系统菜单命令。 • (8)“删除“按钮 • 删除当前的菜单项。 Visual FoxPro程序设计
8.2.1 菜单设计器 • 要提醒用户注意的是,在菜单设计器环境下,系统的“显示”菜单中增加了与菜单有关的两个选项。 • (1)常规选项 • 选择该菜单项将打开“常规选项”对话框,如图8-8所示。该对话框用于为整个菜单系统指定代码。它主要由“过程”、“编辑”、“位置”、“菜单代码”和“顶层表单”组成。 • (2)菜单项 • 当用户选择“显示”菜单中的“菜单选项”命令时,将出现如图8-9所示“菜单选项”对话框。该对话框用于为菜单栏或各子菜单输入代码,它包括“名称”标签、“过程”编辑框和“编辑”按钮。 图8-8 “常规选项”对话框 图8-9 “菜单选项”对话框 Visual FoxPro程序设计
8.2.2 定义菜单 • 本节将通过一个具体的实例说明自定义菜单的方法和过程。 • 【例8-4】为学生成绩管理系统设计一个菜单系统。主菜单包含有“数据维护”、“数据查询”、“报表打印”、 “系统帮助” 和“退出”5个菜单项,且各菜单项分别带有下拉子菜单。 表8-1 菜单项的设置 Visual FoxPro程序设计
8.2.2 定义菜单 • 操作步骤: • 1.规划菜单系统 • 菜单项的设置如表8-1所示。 • 2.单击“文件”菜单下的“新建”按钮,在弹出来的对话框中选中“菜单”,然后选择“新建文件”,打开菜单设计器。定义主菜单,如图8-10所示。 图8-10 定义主菜单 Visual FoxPro程序设计
8.2.2 定义菜单 • 3.定义好主菜单后,定义各个子菜单。单击“数据维护”菜单项中的“创建”选项,进入子菜单定义界面,定义“数据维护”子菜单,如图8-11所示。 图8-11 “数据维护”子菜单 Visual FoxPro程序设计
8.2.2 定义菜单 • 4.从“菜单级”列表框中选择“菜单栏”选项,返回到主菜单定义界面,并按同样的方法分别定义另外“数据查询”和“报表打印”2个子菜单,如图8-12、图8-13所示。 图8-12 “数据查询”子菜单 图8-13 “报表打印”子菜单 Visual FoxPro程序设计
8.2.2 定义菜单 • 5.在“系统帮助”菜单项的命令框中输入命令“do form 帮助.scx”。当执行该菜单项时可以打开帮助表单。 • 6.在“退出”菜单项中,单击“退出”过程中的“编辑”选项,并在其中输入程序代码,如图8-14所示。 图8-14 “退出”过程 Visual FoxPro程序设计
8.2.2 定义菜单 • 7.单击“预览”按钮可预览设计好的菜单效果,如图8-15所示。 • 8.选择菜单“文件->保存”,弹出“另存为”对话框,将菜单保存为“主菜单.MNX”,以便以后修改。系统除创建一个扩展名为MNX的菜单文件外,还会自动创建一个同名的菜单备注文件(MNT)。 图8-15 “学生成绩管理”系统菜单 Visual FoxPro程序设计
8.2.2 定义菜单 • 9.选择主菜单“菜单->生成”,弹出“生成菜单”对话框,如图8-16所示。在“输出文件”文本框中显示出系统设定的路径、文件夹和文件名,文件名默认与菜单格式文件名相同。如果要放在别的文件夹或重新命名,可以直接在文本框中修改,也可以单击文本框右端按钮打开“另存为”对话框,指定新的路径。最后单击“生成”按钮,系统会自动生成菜单程序,菜单程序文件的扩展名为MPR。 图8-16生成菜单程序 Visual FoxPro程序设计
8.2.2 定义菜单 • 10.选择主菜单“程序->运行”,会弹出图8-17所示对话框,选中要运行的菜单程序“主菜单.MPR”,单击“运行”按钮,系统菜单将换成用户菜单,如图8-18所示。 • 11.在命令窗口输入命令:set sysmenu to default,可以结束用户菜单运行,重新显示系统主菜单。如果用户菜单设置了“退出”菜单,也可以单击“退出”来结束用户菜单的运行。 图8-18 用户菜单 图8-17 “运行”对话框 Visual FoxPro程序设计
8.2.3 为顶层表单添加菜单 • 一般情况下,使用菜单设计器设计的菜单,运行在Visual FoxPro的图文框中,也就是说,用户菜单不是在窗口的顶层,而是在第二层,因为Visual FoxPro标题一直被显示。如何去掉该标题,而换成用户指定的标题,可以通过顶层菜单设计来实现。其基本思想是: • 第1步:在菜单设计器设计好菜单,然后VFP系统菜单中选择“显示”下的“常规选项”菜单项,在“常规选项”对话框中选中“顶层表单”复选框,生成菜单程序。 • 第2步:创建一个表单,该表单只设置标题为用户指定的标题,然后在Init方法中添加如下代码: • DO 菜单程序名 WITH THIS, .T. • 第3步:将表单的ShowWindow属性设置为2,使其成为“顶层表单”。 Visual FoxPro程序设计
8.2.3 为顶层表单添加菜单 • 【例8-5】将案例8-4设计的自定义菜单添加到顶层表单中。 • 操作步骤: • 1.打开“主菜单.MNX”,进行菜单设计器。 • 2.选择“显示”下的“常规选项”命令,在“常规选项”对话框中选中“顶层表单”复选框。 • 3.单击常用工具栏上的“保存“按钮,保存修改后的自定义菜单;然后选择“菜单”下的“生成”菜单项,重新生成新的菜单文件“主菜单.MPR”。 • 4.选择“文件”下的“新建”命令,在“新建”对话框中选择“表单”文件类型。单击“新建文件”按钮,打开表单设计器,表单属性设置如表8-2所示。 表8-2 表单属性设置 Visual FoxPro程序设计
8.2.3 为顶层表单添加菜单 • 5.为表单的Init事件过程添加如下代码: • Do 主菜单.MPR WITH THIS,.T. • 6.保存表单,并运行,运行效果如图8-19所示。 图8-19 顶层表单中的菜单 Visual FoxPro程序设计
8.3 快捷菜单设计 • 当鼠标在窗口的某个对象上右击,将显示一快捷菜单,快捷菜单通常列出与相应对象有关的功能命令。与下拉菜单相比较,快捷菜单没有条形菜单栏,只有一个弹出式菜单。因此,对于快捷菜单仅需设计菜单项及其子菜单。 • 利用菜单设计器可以创建快捷菜单,并可以将这些菜单附加在控件上。 • 创建快捷菜单的具体步骤是: • 1、选择项目管理器中的“其他”选项卡,选定“菜单”选项,并单击“新建”按钮。在“新建菜单”对话框中单击“快捷菜单”按钮,打开“快捷菜单设计器”对话框。 • 2、在“快捷菜单设计器”中添加菜单项,其过程与创建下拉菜单完全相同,即在“菜单名称”框中指定相应的菜单标题,在“结果”框中选择菜单激活后的动作并编写相应的命令或过程代码。单击“选项”栏中的按钮后,在“提示选项”对话框中设置快捷键等。 • 3、预览快捷菜单。 • 4、选择“文件”下的“另存为”命令,保存快捷菜单的定义文件(.MNX)。 Visual FoxPro程序设计
8.3 快捷菜单设计 • 5、选择“菜单”下的“生成”命令,生成相应的菜单程序文件(.MPR)。 • 要使用创建的快捷菜单,可以在表单设计器环境下选定需要调用快捷菜单的对象,在该对象的RightClick事件过程中添加调用快捷菜单程序的代码: • Do <快捷菜单程序文件名> • 【例8-6】为表单的一个标签控件建立快捷菜单,其结构如图8-20所示。 • 快捷菜单中包含了3个菜单项:字体、大小、颜色,它们分别带有下级子菜单,选择不同的的字体、大小、颜色时,标签标题随之发生相应的改变。 图8-20 在表单中调用快捷菜单 Visual FoxPro程序设计
8.3 快捷菜单设计 • 操作步骤如下: • 1.选择“文件”菜单下的“新建”命令,从“新建”对话框中选择“菜单”文件类型,在“新建菜单”对话框中单击“快捷菜单”按钮,打开“快捷菜单设计器”对话框。 • 2.定义快捷菜单各选项的名称,如表8-3所示。 图8-21 “新建菜单”对话框 Visual FoxPro程序设计
8.3 快捷菜单设计 • 3.在“菜单级”列表框中选择“快捷菜单”项,回到顶层菜单。选择“字体”菜单项,单击“编辑”按钮,重新进入“字体”子菜单,如图8-22所示。选择“显示”菜单下的“菜单选项”命令,打开“菜单选项”对话框,单击“编辑”按钮,再单击“确定”按钮,进入代码编辑窗口,为“字体”编写通用过程,如图8-23所示。编写完后关闭编辑窗口,返回菜单设计器。 图8-22“字体”子菜单 图8-23 “菜单选项”对话框 Visual FoxPro程序设计
8.3 快捷菜单设计 • 子菜单“字体”通用过程代码: • DO CASE • CASE BAR()=1 • Ft=“宋体” &&选择的菜单项的序号 • CASE BAR()=2 • Ft=“楷体-GB2312” • CASE BAR()=3 • Ft=“黑体” • CASE BAR()=4 • Ft=“隶书” • ENDCASE • _VFP.ActiveForm.Label1.FontName=ft 图8-24 “大小”子菜单 • 4.在“菜单级”列表框中选择“快捷菜单”项,回到顶层菜单。选择“大小”菜单项,单击“编辑”按钮进入“大小”子菜单,如图8-24,在各个子菜单的命令框中输入相应的代码,内容如表8-3所示。 Visual FoxPro程序设计
8.3 快捷菜单设计 • 5.在“菜单级”列表框中选择“快捷菜单”项,回到顶层菜单。选择“颜色”菜单项,单击“编辑”按钮,重新进入“颜色”子菜单,如图8-25所示。按同样的方法,为“颜色”子菜单中的各菜单项写通用过程,代码如表8-3所示。关闭编辑窗口,返回菜单设计器。 • 子菜单“颜色”通用过程代码: • DO CASE • CASE BAR ()=1 • c1=RGB(0,0,0) &&函数RGB()返回一种由给定的红、绿、蓝颜色合成的颜色 • CASE BAR ()=2 • c1=RGB(255,255,0) • CASE BAR ()=3 • c1=RGB(255,0,0) • CASE BAR ()=4 • c1=RGB(0,0,255) • ENDCASE • _VFP.ActiveForm.Label1.ForeColor=c1 图8-25 定义“颜色”子菜单 Visual FoxPro程序设计
8.3 快捷菜单设计 • 6.单击“预览”按钮,预览快捷菜单。 • 7.选择“文件”菜单下的“另存为”命令,保存创建的快捷菜单,输入文件名“快捷菜单.MNR”。 • 8.选择“菜单”下的“生成”命令,生成相应的菜单程序文件“快捷菜单.MPR”。 • 9.选择“文件”菜单下的“新建”命令,在“新建”对话框中选择“表单”文件类型。新建一个表单,表单属性设置如表8-4所示。 表8-4 表单属性设置 Visual FoxPro程序设计
8.3 快捷菜单设计 • 10.在表单添加一个标签控件,标签属性设置如表8-5所示。 • 属性名称属性值AutoSize.T.BackStyle0-透明Caption欢迎进入学生成绩管理系统双击标签控件,打开代码编辑窗口,为标签的RightClick事件过程添加如下代码: • Do菜单1.MPR • 11.选择“文件”下的“另存为”命令,保存表单文件。 • 12.运行表单文件,当右击标签对象,会弹出如图8-20所示快捷菜单。选择不同的菜单项可使标题文字作出相应的变化。 表8-5 标签属性设置 Visual FoxPro程序设计
本章小结 • 本章介绍了在VFP环境下两种菜单的创建和应用。一个良好的数据库应用系统程序中,菜单起着组织、协调全部数据库对象的关键作用,一个良好的菜单系统会给用户一个友好的操作界面,并会带来操作上的便利。对数据库应用系统进行操作时,菜单程序尤为重要。 Visual FoxPro程序设计