《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新第10章》由会员分享,可在线阅读,更多相关《Visual FoxPro 程序设计教程 教学课件 ppt 作者 刘瑞新第10章(71页珍藏版)》请在金锄头文库上搜索。
1、第10章 菜单与工具栏,10.1 设计菜单 10.2 创建自定义工具栏,10.1 设计菜单,“菜单设计器”是VFP提供的又一个可视化编程工具。使用“菜单设计器”可以添加新的菜单选项到Visual FoxPro的系统菜单中定制已有的VFP系统菜单,也可以创建一个全新的自定义菜单,以代替Visual FoxPro的系统菜单。 无论是定制已有的VFP系统菜单,还是开发一个全新的自定义菜单,创建一个完整的菜单系统都需要以下步骤: 规划菜单系统:确定需要哪些菜单、出现在界面的何处以及哪几个菜单要有子菜单等。 创建菜单和子菜单。 为菜单系统指定任务:指定菜单所要执行的任务,例如显示表单或对话框等。另外,如
2、果需要,还可以包含初始化代码和清理代码。 选择“预览”按钮预览整个菜单系统。 从“菜单”菜单上选择“生成”命令,生成菜单程序。 运行生成的程序,测试菜单系统。,10.1.1 规划菜单系统,应用程序的实用性在一定程度上取决于菜单系统的质量。在设计菜单系统时,应考虑下列准则: 按照用户所要执行的任务组织系统,而不要按应用程序的层次组织系统。只要查看菜单和菜单项,用户就应该可以对应用程序的组织方法有一个感性认识。因此,要设计好这些菜单和菜单项,程序员必须清楚用户思考问题的方法和完成任务的方法。 给每个菜单一个有意义的菜单标题。按照估计的菜单项使用频率、逻辑顺序或字母顺序组织菜单项。如果不能预计频率,
3、也无法确定逻辑顺序,则可以按字母顺序组织菜单项。当菜单中包含有八个以上的菜单项时,按字母顺序特别有效。太多的菜单项需要用户花费一定的时间才能浏览一遍,而按字母顺序则便于查看菜单项。 在菜单项的逻辑组之间放置分隔线。, 将菜单上菜单项的数目限制在一个屏幕之内。如果菜单项的数目超过了一屏,则应为其中的一些菜单项创建子菜单。 为菜单和菜单项设置访问键或键盘快捷键。例如,Alt+F可以作为“文件”菜单的访问键。 使用能够准确描述菜单项的文字。描述菜单项时,应使用日常用语,而不要使用计算机术语。 对于英文菜单,可以在菜单项中混合使用大小写字母。只有强调时才全部使用大写字母。,10.1.2 “菜单设计器”
4、简介,选择主菜单“文件”中的“新建”,单击“新建”对话框底部的“菜单”按钮,再单击“新文件”钮,打开“新建菜单”对话框。单击“菜单”按钮,打开“菜单设计器”。 菜单设计器包含: 菜单名称在菜单系统中指定的菜单标题和菜单项。可为菜单中的各选项定义一个访问键和快捷键。当菜单项名是英文词汇时,若选首字母是热键,在该选项的名字前加上“”,如“Edit”。若要另选热键,则要在选项名后加“(字母)”,如“编辑(E)”。 一旦在“菜单名称”栏中输入了任何内容,“菜单名称”栏左边将出现一个上下双箭头按钮移动控件,利用“移动控件”可以可视化地调整菜单项之间的顺序。 在“菜单名称”栏中填入菜单项名,可看到出现的结
5、果等选项。, 结果指定用户在选择菜单标题或菜单项时,将执行的动作。例如,可执行一个命令、打开一个子菜单或运行一个过程。 单击“结果”下拉表,有4个选择,如图10-1所示。,说明:在编辑窗口中输入一个过程文件,当选择该菜单选项时系统就会自动运行这个过程文件。由于在生成程序时系统会自动生成这个过程名,所以不需要再用PROCEDURE命令给这个过程命名。一旦生成了过程文件,“创建”钮就变为“编辑”钮。,对添加的菜单项有4种处理方式,其说明见表10-1。, 选项单击“选项”按钮显示“提示选项”对话框,如图10-2所示。,在“提示选项”对话框中可以定义键盘快捷键、确定废止菜单或菜单项的条件。当选定菜单或
6、菜单项时,在状态栏中包含相应信息,指定菜单标题的名称以及在OLE可视编辑期间控制菜单标题位置。对话框中的选择项见表10-2。,表10-2 “提示选项”对话框中的选项, 菜单级显示当前正在设计的菜单级,在下拉列表框中还列出了当前子菜单的上级菜单名。选择上级菜单名可以返回上一级菜单栏对话框。 插入在当前行插入新的一行。 插入栏打开“插入系统菜单栏”对话框,选择在当前行插入系统菜单栏。 删除删除当前行的菜单定义。 预览显示正在创建的菜单。在菜单设计过程中,可随时单击“预览”钮显示当前创建的菜单,已经生成的菜单出现在原来系统菜单的地方。,10.1.3 主菜单中的有关选项,使用菜单设计器时,在“显示”菜
7、单中将增加两个选项:常规选项与菜单选项,并且在主菜单中将增加一个“菜单”子菜单。 1. 常规选项 选择主菜单中的“常规选项”,得到的是对应于整个菜单系统的选项。 选择“显示”菜单中的“常规选项”,显示“常规选项”对话框,如图10-3所示。, 对话框的右下角有一个“菜单代码”区域,包含“设置”和“清理”两个复选框: 设置:打开一个编辑窗口,从中可以向菜单系统添加初始化代码。 清理:打开一个编辑窗口,从中可以向菜单系统添加清理代码。 要激活编辑窗口,在“常规选项”对话框中选择“确定”按钮。这些输入的命令,对于“设置”是在运行显示菜单的命令之前;而对于“清理”是在运行显示菜单的命令之后,并不是在使用
8、完菜单之后。因此,它们分别称为初始代码和清理代码。 可通过向菜单系统添加初始代码而定制菜单系统。初始代码可以包含创建环境的代码、定义内存变量的代码、打开所需文件的代码以及使用PUSH MENU和POP MENU保存或还原菜单系统的代码。 可通过向菜单系统添加清理代码来裁减菜单系统。典型的清理代码包含初始时启用或废止菜单及菜单项的代码。在生成的菜单代码中,清理代码在初始代码及菜单定义代码之后,而在为菜单或菜单项指定的过程代码之前。, 对话框的左下角是位置区域,确定正在定义的菜单系统相对于激活菜单的位置,可以有以下几种选择: 替换:使用新的菜单系统替换已有的菜单系统。 追加:将新菜单系统添加在活动
9、菜单系统的右侧。 在.之前:将新菜单插入指定菜单的前面。该选项显示一个包含活动菜单系统名称的下拉列表。要插入新菜单,选择您希望新菜单在其前面的菜单名。 在.之后:将新菜单插入指定菜单的后面。这个选项显示一个包含活动菜单系统名称的下拉列表。要插入新菜单,选择您希望新菜单紧跟其后的菜单名。 “过程”文本框中,对于正在定义的菜单系统可以输入过程代码,它是作为某个指定菜单项的过程。使用中当选择这个菜单项时,此过程将被执行。如果这个菜单项原来已经生成了一个过程,则运行原来的那个过程,即这里输入的过程是在不存在其它过程时才运行。 “顶层表单”复选框。由于“菜单设计器”创建的菜单系统默认位置是在VFP系统窗
10、口之中,如果希望菜单出现在表单中,就需要选中“顶层表单”复选框,当然还必须将表单设置为“顶层表单”。,2. 菜单选项 选择主菜单中的“菜单选项”,输入的过程仅属于主菜单条或一个指定的子菜单项。 选择“显示”菜单中的“菜单选项”,显示如图10-4所示的“菜单选项”对话框。 可以使用它对主菜单条或指定的子菜单添加过程,在“过程”文本框中或选择“编辑”钮,都可在其中输入一个过程文件。当用户正在定义的是主菜单上的一个选项时,这个过程文件可以被主菜单上的所有选项调用。如果正在定义的是指定子菜单上的一个选项,则此过程可以被这个子菜单的所有选项调用。,3. “生成”菜单码 完成菜单的定义后,还需生成菜单码。
11、选择主菜单中的“菜单”+“生成”,选择“是”,在“另存为”对话框中输入菜单名,“确定”后显示“生成菜单”对话框,如图10-5所示。在“输出文件”框中可改变输出文件名,系统默认扩展名为.mpr。单击“生成”钮,则生成菜单程序,到此完成菜单的创建工作。,4. 快速菜单 使用“快速菜单”功能可以将Visual FoxPro的系统菜单放入菜单设计器中,供用户修改和操作。在其中可以增加用户自己的菜单和裁减、修改原来的系统菜单。这也是学习菜单设计的一种好方法。用“快速菜单”设计菜单的步骤为: 选择主菜单“文件”中的“新建”,用鼠标单击“新建”对话框中的“菜单”按钮,然后单击“新文件”钮,打开菜单设计器。
12、选择主菜单“菜单”中的“快速菜单”,菜单设计器自动填充了系统主菜单中的所有选项。如图10-6所示。 在“快速菜单”菜单设计器中,用“插入”钮插入新的菜单项,用“删除”钮裁减菜单项,也可以通过选择主菜单上的选项调出相应子菜单。图10-7显示的是“文件”菜单的子菜单项。 根据需要裁减、修改原来的系统菜单,具体操作步骤见下面的例子。,10.1.4 在顶层表单中添加菜单 若要在顶层表单中添加菜单,可以按以下步骤操作: 创建顶层表单的菜单。即在“常规选项”对话框中,使用鼠标选中“顶层表单”复选框。 将表单的ShowWindow属性设置为“2 作为顶层表单”。 在表单的Init事件中,运行菜单程序并传递两
13、个参数: DO menuname.mpr WITH oForm, lAutoRename 其中,oForm是表单的对象引用。在表单的Init事件中,THIS作为第一个参数进行传递。 IAutoRename指定了是否为菜单取一个新的唯一的名字。如果计划运行表单的多个实例,则将.T.传递给lAutoRename。 例如,可以使用下列代码调用名为mySDImenu的菜单: DO mySDImenu.mpr WITH THIS, .T.,10.1.5 自定义菜单的设计,1. 创建一个自定义菜单 使用“菜单设计器”可以创建菜单、菜单项、菜单项的子菜单和分隔相关菜单组的线条等等。下面以一个具体实例来说明创
14、建自定义菜单的方法。 【例10-1】在例5-13中使用菜单来改变标题板中文本的字体与风格,如图10-8所示。,设计步骤如下:,(1) 设计菜单 规划菜单系统。菜单项的设置见表10-3。 创建菜单和子菜单。选择“文件”菜单中的“新建”,单击“新建”对话框底部的“菜单”按钮,单击“新建文件”钮。打开“新建菜单”对话框,单击“菜单”。打开“菜单设计器”。 首先选择“显示”菜单中的“常规选项”,用鼠标选中“顶层表单”复选框,将菜单定位于顶层表单之中。按“确定”按钮返回菜单设计器。 在菜单设计器中输入菜单名:“文本字体(Z)”和“文本风格(F)”,如图10-9所示。,单击“创建”按钮,分别输入子菜单项名
15、(图10-10、图10-11)。, 编写菜单代码。在“菜单级”下拉列表框中选择“菜单栏”,回到顶层菜单。选择“文本字体”,用鼠标单击其右边“编辑”按钮,重新进入“文本字体Z”的编辑对话框。在主菜单中选择“显示”中的“菜单选项”,打开菜单选项对话框(图10-4),单击“编辑”按钮,然后单击“确定”按钮,打开编辑器,为“文本字体Z”编写通用过程:,DO CASE CASE BAR() = 1 & 函数BAR()返回最近一次选择的菜单项的编号 图10-11 文本风格子菜单 a = “宋体“ CASE BAR() = 2 a = “黑体“ CASE BAR() = 3 a = “楷体_GB2312“
16、CASE BAR() = 4 a = “隶书“ ENDCASE _VFP.ActiveForm.Container1.Label1.FontName = a 关闭编辑器,返回菜单设计器。 在“菜单级”下拉列表框中选择“菜单栏”,回到图10-9。再用鼠标单击“文本风格”子菜单的“编辑”按钮,进入“文本风格F”的编辑对话框。分别选中各菜单项的“创建”按钮,为其创建过程代码。,“粗体”菜单项: L = NOT _VFP.ActiveForm.Container1.Label1.FontBold SET MARK OF BAR 1 OF “文本风格F“ L & 为第1个菜单选项设置或清除标记符号 _VFP.ActiveForm.Container1.Label1.FontBold = L “斜体”菜单项: L = NOT _VFP.ActiveForm.Container1