第七章 Visual FoxPro菜单与工具栏 本章教学要求:了解并掌握菜单设计的方法和创建自定义工具栏的方法,能够创建菜单项和工具栏,并能为每个菜单项和工具栏选项制定任务和操作。 7.1 菜单的建立 7.2 工具栏 7.3 工具栏与菜单协同工作
7.1 菜单的建立 创建一个完整的菜单系统包括以下步骤: 1.规划系统 2.创建菜单和子菜单 3.为菜单系统指定任务 4.预览菜单系统 5.生成菜单 6.运行生成的程序,测试菜单系统。
规划菜单系统的一些基本原则: 1.按照要执行的任务组织系统,而不是按应用程序的层次组织系统。 2.给每个菜单定义一个有意义的标题。并且描述菜单项尽量使用日常用语,尽量避免使用计算机专业词汇。 3.为使菜单清晰,在菜单项的逻辑组之间使用分隔符。具体方法是,在“菜单名称”栏只输入“\-”,则在菜单项中产生一个分隔符号,对于主菜单而言是个空格,对于子菜单而言是一条分隔横线。 4.按照一定的顺序组织菜单项,比如,按字母顺序,或者按逻辑顺序等。
规划菜单系统的一些基本原则(续上页): 5.注意菜单项的数目尽量不要超出一个屏幕所能显示的范围。 6.注意分清菜单项之间的逻辑关系,尤其是要正确划分主菜单项与子菜单项之间的关系。 7.为菜单项设置访问快捷键。方法是在热键字母前加上符号“\<”。如果菜单项是英文,在没有给出热键定义时,则菜单提示信息的第一个字母被自动定义为热键。
菜单设计器是Visual FoxPro提供的一个可视化编程工具,设计者利用它可以建立应用程序的菜单系统以及快捷 菜单。 启动菜单设计器 菜单设计器是Visual FoxPro提供的一个可视化编程工具,设计者利用它可以建立应用程序的菜单系统以及快捷 菜单。 采用以下方式之一可以启动菜单设计器: 1.单击“文件”菜单项,选择“新建”按钮,在弹出的对话框中选择“菜单”,单击“新建文件”按钮,在弹出的对话框中选择“菜单”。
启动菜单设计器(续上页) 2. 在“项目管理器”对话框中选择“其他”选项中的“菜单”,单击“新建”按钮,在弹出的“新建菜单”对话框中单击“菜单”按钮。 3.在已有菜单文件的情况下,单击“文件”选项中“打开”按钮,在弹出的对话框中指定文件类型为“菜单”,选中菜单文件后确定。 4.在命令窗口中执行命令“CREATE MENU”或者是“MODIFY MENU”。
7.1.1 下拉菜单的建立 首先打开菜单设计器,如图7.1所示。 图7.1 菜单设计器
在“菜单名称”栏中,单击,出现提示信息输入框,然后将要添加的菜单项的菜单标题输入,例如,键入“文件”菜单。 如果要创建下一个主菜单项,则单击右侧的“插入”按钮,在“菜单名称”栏中,会出现一个新的提示输入框,然后操作同上。 在菜单名的左边有一个小方框按钮,称为移动指示器,当鼠标移动到它的上面时形状会变成上下双箭头的样子。用鼠标拖动移动指示器即可改变当前菜单项在菜单列表中的位置。 然后单击“结果”框,出现一个下拉菜单选项,如图7.2所示。
在“结果”栏中共有四个选项,用于选定菜单项的功能类别,分别是: 图7.2 “结果”下拉菜单 在“结果”栏中共有四个选项,用于选定菜单项的功能类别,分别是:
1.子菜单(Submenu) 如果用户定义的当前菜单项还有子菜单,则选该项。选中这一项后,在其右侧将出现“编辑”按钮,单击“编辑”按钮将进入新的一屏来设计子菜单。菜单的级别可从“菜单级”下拉列表中看出。 2.命令(Command) 若当前菜单项的功能是执行某种动作的话应选这一项。选中该项后,在其右侧出现一文本框,在这个文本框中输入要执行的命令。 3.填充名称(Pad Name) 当选中该选项时,在其右侧会出现一个文本框,在这个文本框中输入该菜单项的一个内部名称或序号,该名称不同于菜单项名,并不用于显示。
“结果”栏选项(续上页) 4.过程(Procedure) 用于定义一个与菜单项相关联的过程,当用户选择了该菜单项,将执行这一过程。当选中该项时,在其右侧将出现一“创建”按钮,单击该按钮将调出编辑窗口,用户可在编辑窗口输入过程代码。 图7.2中,“菜单级”弹出列表显示出当前所处的菜单级别。当菜单的层次较多时,利用这一项可快速地返回任意一级菜单。比如,设置主菜单时,菜单级选项中的内容是“菜单栏”,而设置主菜单项“文件”的子菜单时,菜单级选项中的内容是“文件”…,依此类推。
一个值得注意的是有关“选项”按钮的使用。单击该按钮,系统将弹出一个“提示选项”对话框,如图7.3所示。 图7.3“提示选项”对话框 一个值得注意的是有关“选项”按钮的使用。单击该按钮,系统将弹出一个“提示选项”对话框,如图7.3所示。 图7.3“提示选项”对话框
使用“提示选项”对话框可设置用户定义的菜单系统中的各菜单项的属性。该对话框主要有以下几个选项: 1 使用“提示选项”对话框可设置用户定义的菜单系统中的各菜单项的属性。该对话框主要有以下几个选项: 1.快捷方式 用于指定菜单或菜单项的快捷键(即Ctrl键和其他键的组合)。其中,“键标签”用于显示键组合;“键说明”用于显示需要出现在菜单项旁边的文本。 2.位置 当用户在应用程序中编辑一个OLE对象时,可在该区指定菜单项的位置。其中,“无”指定菜单标题不设置在菜单栏上。“左”、“中”、“右”分别指定将菜单标题设置在菜单栏左边、中间、右边的菜单标题组中。 注意:只有编辑OLE对象时,菜单定位选项才可用。
(续上页) 3.跳过 单击这个编辑框右侧的“…”按钮将调出表达式生成器,用户可在表达式生成器中输入允许/禁止菜单项的条件。如表达式为真,则菜单项不可用。 4.信息 单击这个编辑框右侧的…按钮也将调出表达式生成器,在表达式生成器的“信息”编辑框中输入对菜单项的说明信息,这些信息在用户选择了这个菜单项后将出现在系统状态条上。
(续上页) 5.菜单项# 允许指定可选的菜单标题,用户可以在程序中通过该标题引用菜单项,缺省状态下,各菜单项无固定的名称,系统在生成菜单程序时将给出一个随机的名字。 6.备注 在这里输入对菜单项的注释。不过这里的注释不会影响到生成的菜单程序代码。在运行菜单程序时,Visual FoxPro将忽略所有的注释。
菜单创建完成后,都可以通过单击右下角的“预览”按钮对当前的菜单系统进行预览。 如图7 菜单创建完成后,都可以通过单击右下角的“预览”按钮对当前的菜单系统进行预览。 如图7.4所示,我们创建了一个主菜单项“文件”,文件选项下有3个子菜单项,分别是“新建”、“另存”和“退出”。 图7.4 预览菜单1
7.1.2 快捷菜单的建立 “快捷菜单设计器”,如图7.5所示。 图7.5快捷菜单设计器
“快捷菜单设计器” 的特点 1.在“快捷菜单设计器”中,菜单级自动设置为“快捷菜单”,即主菜单选项为“快捷菜单”,所有新建的菜单项均为“快捷菜单”选项的子菜单。 2. 在“快捷菜单设计器”中自动启用了菜单项“插入栏…”按钮,单击“插入栏…”按钮,会出现“插入系统菜单栏”对话框,如图7.6所示。 图7.6 “插入系统菜单栏”对话框
1.Visual FoxPro系统主菜单下,打开菜单文件,进入菜单设计器窗口 。 7.1.3 设置对菜单项的响应 设置对菜单项的响应,即为菜单系统指定具体的任务。而菜单选项的任务,可以是子菜单、命令或程序。 其操作步骤如下: 1.Visual FoxPro系统主菜单下,打开菜单文件,进入菜单设计器窗口 。 2.在“菜单设计器窗口”,选择主菜单项“文件”,然后选择“编辑”,进入“菜单设计器”子菜单操作窗口。
例如,“新建”菜单项,执行命令“Modify Command”。 (续上页) 3.如果菜单选项的任务由单条命令完成,则子菜单项应选择“命令”,如果菜单选项的任务由多条命令完成,则子菜单项必须选择“过程”,如果菜单选项还包括子菜单,则应选择“子菜单”,并且对下级菜单还需通过相应的选择指定任务。 例如,“新建”菜单项,执行命令“Modify Command”。 菜单设计完成后,单击系统主菜单项“菜单”按钮,出现一个下拉菜单,选择“生成”选项,出现一个“生成菜单”对话框,如图7.7所示 。 图7.7 “生成菜单”对话框
用户可以选择输出文件的存放路径,确定以后单击“生成”按钮,生成一个 用户可以选择输出文件的存放路径,确定以后单击“生成”按钮,生成一个.mpr文件,然后单击系统主菜单项“程序”。 选择“运行”子菜单,在窗口左上角出现编辑的文件主菜单项,例如,我们创建了一个“文件”菜单项,该菜单项含有3个子菜单,分别是“新建”、“保存”、“退出”。点击“文件”,则出现一个下拉菜单,如图 7.8所示。 图7.8 “运行”效果图
7.2 工具栏 Visual FoxPro向用户提供了十几个工具栏。默认情况下,Visual FoxPro在主窗口中显示的是常用工具栏。 Visual FoxPro中的工具栏有固定工具栏和浮动工具栏两种形式。图7.9中主菜单下方的常用工具栏即固定工具栏;图7.9中的表单设计器工具栏即浮动工具栏。固定工具栏和浮动工具栏可以通过鼠标拖动操作进行相互转换。 图7.9 固定工具栏和浮动工具栏
用户应用程序中有一些任务使用非常频繁,Visual FoxPro允许将这些高频率的重复任务定制在工具栏上,以简化和加速任务的执行。 7.2.1 工具栏的建立 用户应用程序中有一些任务使用非常频繁,Visual FoxPro允许将这些高频率的重复任务定制在工具栏上,以简化和加速任务的执行。 1.定制工具栏 从“显示”菜单选择“工具栏”选项,出现“工具栏”对话框,如图7.10所示。 图7.10 “工具栏”对话框
“工具栏对话框”有三个复选框,分别是: “彩色按钮”复选框 控制工具栏中的按钮是用彩色或黑白方式显示,彩色为默认方式。 “大按钮”复选框 用在大于常规尺寸下显示按钮。这只在高分辨率监视器中使用,该方法使相同数量的象素比在低分辨率监视器中占据较小的区域,设置Windows以便在较小尺寸下显示任何东西,这些按钮在其常规尺寸下是看不见的。 “工具提示”复选框 是控制当指针定在工具图标上时,是否在这个工具图标旁边显示带有工具名字的提示框。
选择定制按钮,打开“定制工具栏”对话框,如图7. 11所示。 图7 选择定制按钮,打开“定制工具栏”对话框,如图7.11所示。 图7.11 “定制工具栏”对话框 选择“分类”,在“按钮”下方会出现所选分类包含的命令按钮,将你所需要的按钮用鼠标拖动到定制工具栏上。
2.创建自己的工具栏 建立一个新工具拦与定制一个现有的工具栏非常相似。在“工具栏”对话框中,选择 “新建”按钮,出现“新工具栏”对话框,如图7.12所示。 图7.12 “新工具栏”对话框 用户必须在“工具栏名称”文本框中给这个新工具栏输入一个名字,比如,输入“我的工具栏”,然后单击“确定”。
Visual FoxPro将自动地显示“定制工具栏”对话框,同时也显示出带有用户指定名字的新工具栏,如图7. 13所示。 图7
该工具栏开始是空的,用户可以从其它工具栏或从“定制工具栏”对话框的“按钮”框中单击并施动一些工具到该工具栏中,以便增加这些新工具,就像用户定制一个现存工具栏一样,如图7.14所示。 最后选择“定制工具栏”对话框的“关闭”选项,关闭工具栏窗口,完成新建工具栏。 图7.14 创建“我的工具栏”
3.删除已创建的工具栏步骤如下: (1)从“显示”菜单中选择“工具栏”,打开“工具栏”对话框。 (2)在“工具栏”对话框选择要删除的工具栏。 (3)选择“删除”按钮。 (4)选择“确定”按钮以确定删除。
7.2.2 设置对工具栏按钮的响应 按照前述步骤所生成的工具栏,其按钮的功能是标准的,其作用和在系统自带的工具栏中使用相同按钮的功能完全一样,所以对于这类工具栏按钮的响应不需要作任何操作。 如果要创建完全自定义的工具栏,比如说定义一个系统按钮中没有的按钮键,则必须首先为它定义—个类。 Visual FoxPro提供了一个工具栏基类。在此基础上用户可以创建所需的类。
定义一个自定义工具栏类的步骤如下: (1)从项目管理器中选定“类库”,然后选择“新建”按钮,或者从“文件”菜单中选择“新建”命令,在新建对话框中选定“类”,然后选择“新建文件”按钮。 (2)出现“新建类”对话框。 (3)在“类名”框中键入新类的名称,如Mytool。 (4)从“派生于”框中选择“Toolbar”,以使用工具栏基类。 (5)在“存储于”框中键入类库名,以保存创建的新类。
“新建类”对话框画面将如图7. 15所示。 图7. 15“新建类”对话框 图7. 16 “类设计器” (6)单击“确定”按钮,出现如图7 “新建类”对话框画面将如图7.15所示。 图7.15“新建类”对话框 图7.16 “类设计器” (6)单击“确定”按钮,出现如图7.16所示的“类设计器”。
(7)现在可以在自定义工具栏类中添加任何对象,只要是Visual FoxPro支持的对象就行。 自定义的工具栏类中添加了对象和设置好对象的属性后,还可以在类中添加通用的代码。 例如:图7.17是定义有三个命令按钮和两个分隔符的工具栏类。 图7.17 自定义“我的工具栏”工具栏
可以在工具栏的“退出”按钮中添加如下的代码: CLEAR EVENTS 它将挂起Visual FoxPro的事件处理过程,同时将控制权返回给执行READ EVENTS命令并开始事件循环的程序。 同样,可以为其他每个按钮添加代码,这些代码将作为通用代码被这个类的每个对象所继承。
7.3 工具栏与菜单协同工作 在设计与创建应用程序时应做到: 1.无论用户使用工具栏按钮,还是使用与按钮相关联的菜单项,都执行同样的操作。 如果创建了工具栏,必须使菜单命令与对应的工具栏按钮同步工作。例如,启用了某个工具栏按钮,则必须同时启用对应的菜单命令。 在设计与创建应用程序时应做到: 1.无论用户使用工具栏按钮,还是使用与按钮相关联的菜单项,都执行同样的操作。 2.相关的工具栏按钮与菜单项具有相同的可用或不可用属性。 如果将菜单与工具栏相协调,则菜单项执行与对应工具栏相同的任务,并在对应的工具栏按钮废止时,菜单项也自动地废止。
例如: 工具栏按钮的名字为Copy,可以在子菜单项命令编辑框中添加如下代码: Formset. Toolbar. Copy 例如: 工具栏按钮的名字为Copy,可以在子菜单项命令编辑框中添加如下代码: Formset.Toolbar.Copy.Click 在“选项”栏选择此按钮,打开“提示选项”对话框,选择“跳过”。 在“表达式生成器”中输入表达式,指出当工具栏命令按钮失效时,菜单功能应该“跳过”。
可以在“跳过”框中输入如下表达式: NOT Formset. Toolbar. Copy 可以在“跳过”框中输入如下表达式: NOT Formset.Toolbar.Copy.Enabled 完成上述工作后,就可以生成菜单,然后把菜单添加到拥有此工具栏的表单集中,并运行表单集。 在用户打开菜单时,Visual FoxPro计算“跳过”条件的值,如果相关的工具栏命令不可用,则菜单也不可用。当用户选择菜单项时,则执行相关工具栏命令的Click事件代码。这样,菜单和自定义工具栏的工作就协调起来了。