第九章 菜单与工具栏的设计与应用

20
第第第第第第第第第第第第第第第 第第第第一、 VFP 菜菜菜 菜菜 菜菜菜菜菜菜菜菜菜菜菜 菜菜菜菜菜菜菜菜菜菜 菜菜菜菜菜菜菜菜菜 第第第第菜菜菜菜菜菜 菜菜 第第第第菜菜菜菜菜菜 菜菜

Upload: cyma

Post on 09-Jan-2016

98 views

Category:

Documents


7 download

DESCRIPTION

第九章 菜单与工具栏的设计与应用. 教学内容: 一、 VFP 菜单系统结构 二、下拉式菜单的设计与使用 三、快捷菜单的设计与使用 四、工具栏的建立和应用 教学重点: 菜单设计的具体操作 教学难点: 菜单设计的具体操作. 一、 VFP 菜单系统结构. 1 、菜单的常见功能. 一、 VFP 菜单系统结构. 2 、下拉式菜单的结构. 图 9-3 菜单实例. 图 9-4 建立菜单主选项. 二、下拉式菜单的设计与使用. 1 、菜单设计的基本过程. 例 1 :建立如图所示菜单的主选项,并保存为文件 cd1.mnx 。. 图 9-2 菜单设计器窗口. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第九章 菜单与工具栏的设计与应用

第九章菜单与工具栏的设计与应用

教学内容:一、 VFP 菜单系统结构

二、下拉式菜单的设计与使用

三、快捷菜单的设计与使用

四、工具栏的建立和应用

教学重点:菜单设计的具体操作

教学难点:菜单设计的具体操作

Page 2: 第九章 菜单与工具栏的设计与应用

一、 VFP 菜单系统结构

1 、菜单的常见功能

Page 3: 第九章 菜单与工具栏的设计与应用

一、 VFP 菜单系统结构

2 、下拉式菜单的结构

Page 4: 第九章 菜单与工具栏的设计与应用

二、下拉式菜单的设计与使用

1 、菜单设计的基本过程

例 1 :建立如图所示菜单的主选项,并保存为文件 cd1.mnx 。

图 9-3 菜单实例

图 9-4 建立菜单主选项

Page 5: 第九章 菜单与工具栏的设计与应用

二、下拉式菜单的设计与使用

( 1 )调用菜单设计器菜单法:使用“新建”工具或菜单命令法: CREATE MENU 菜单文

件名

( 2 )菜单设计器的使用:

图 9-2 菜单设计器窗口

“ 菜单名称”:指定显示在菜单中的选项名称。当有多个选项时,“菜单名称”列左边的双向箭头允许用鼠标拖动调整顺序。 “ 结果”:指定在选择菜单项时发生的动作类型,可以是命令、填充名称、子菜单和过程。

“ 选项”按钮:可以进入“提示选项”对话框,在此可定义键盘快捷键和其他菜单选项。“ 菜单级”下拉列表:用于选择处理的菜单或子菜单。“ 插入”:用于在菜单设计器窗口中插入新选项。“插入栏”仅在编辑子菜单时有效,用于将一个系统菜单栏插入菜单中。 “ 预览”按钮:显示正在创建的菜单。

Page 6: 第九章 菜单与工具栏的设计与应用

二、下拉式菜单的设计与使用

菜单名和热键设置菜单名称:\< 字母——热键, \ - ——分隔

线

( 2 )菜单设计器的使用:

Page 7: 第九章 菜单与工具栏的设计与应用

“ 结果”列:用于设定该菜单选项被选取时要执行的动作。系统预设的动作都是“子菜单”,可以用下拉列表选择其他动作。每个选项的含义如下:1 )命令:表示要执行一条 VFP 的命令。可以把要执行的命令输入右边的空白方框中。例如“退出”选项实现退出应用程序,返回 VFP 主窗口,选择“结果”为“命令”,在其后的编辑框中输入: SET SYSMENU TO DEFAULT ,表示结束应用程序的菜单运行,显示 VFP 的系统菜单。2 )填充名称:输入一个系统定义的或系统使用的菜单名。在子菜单中该项显示为Bar# 。

二、下拉式菜单的设计与使用

( 2 )菜单设计器的使用:

3 )子菜单:表示此选项下还有下一层菜单。选取时,右方出现“创建”按钮,单击后出现另一层的相同的设计界面,可设计下一层的菜单,如此能一层一层地建立出分层的菜单选项。4 )过程:与“命令”选项类似,不同的是这里可以输入许多条命令,当选取此选项时,这

一串命令将会被顺序执行。

Page 8: 第九章 菜单与工具栏的设计与应用

设定“选项” 在菜单设计器窗口中,当选中某一菜单项时,其右方的“选项”处会出现一个灰色的按钮,单击后弹出“提示选项”对话框。( 1 )快捷方式 设定此菜单项的快捷键。例如,在编辑中经常使用的 Ctrl+C 为“复制”功能的快捷键。在提示选项中设置快捷键的方法:只需在将光标移到“键标签”框中并按下要使用的快捷键, VFP 便会记录它们。

二、下拉式菜单的设计与使用( 2 )菜单设计器的使

用:

( 2 )跳过选项 此选项用来判断其右方的条件表达式的结果,若执行菜单时条件表达式结果为 .T. ,则此菜单项就会变为灰色字体而无法选取,表示此选项无效。要注意的是在预览中无法显示出此项功能,必须在执行菜单时才会执行条件的判断。( 3 )信息 此处的文字将显示在窗口的状态栏上,作为选取该选项时的提示信息。例如,为“浏览”选项输入提示信息“浏览数据记录”,则选中该项时,状态栏显示结果如图 9-7所示。( 4 )主菜单名 在这里输入选项的名称,用来判断在程序中是否选择该选项。若是在子菜单选项,此选项变为“菜单项 #” ,可在其中设定此选项的编号,以便在程序中判断是否选取了它,设定的值必须为数字。( 5 )备注:设定注解,用来作为解释。

Page 9: 第九章 菜单与工具栏的设计与应用

( 3 )存储并执行菜单

当菜单设计完成以后,必须先保存为菜单文件, VFP 中菜单文件默认扩展名为 .MNX ,保存后才能执行此菜单。

保存菜单:“文件”→保存”。

运行菜单:

1 )在项目管理器中选择“其他”→单击右边的“运行”按钮。

2 )在菜单设计器中打开菜单,并选取命令“菜单 / 生成”选项,单击“生成”按钮会生成扩展名为 .MPR 的菜单程序文件,在命令窗口中输入命令:

DO < 菜单文件名 >. MPR

由于没有为菜单选项设定程序代码,运行菜单时选取菜单选项没有任何动作。

图 9-8 “ 生成菜单”对话框

二、下拉式菜单的设计与使用

Page 10: 第九章 菜单与工具栏的设计与应用

二、下拉式菜单的设计与使用

此处列出设置菜单选项代码时的常用命令,以供参考。

• 调用表单: DO FORM < 表单文件名 >

• 调用程序: DO < 程序文件名 >

• 调用查询: DO <查询文件名 >.qpr

• 打印报表: REPORT FORM <报表文件名 >   TO  PRINT

• 预览报表: REPORT FORM <报表文件名 >   PREVIEW

• 恢复系统菜单: SET SYSMENU  TO  DEFAULT

• 退出 VFP : QUIT

( 4 )菜单选项代码

Page 11: 第九章 菜单与工具栏的设计与应用

1. 使用 ______可以将自定义工具栏添加到表单集中。 A. 表单控件工具栏 √ B.报表设计器 C. 项目管理器 D. 菜单设计器2. 设计一个菜单选项的功能为退出 Visual FoxPro,则应设置其结果为命令,并在其后输入命令 ______。 A.EXIT B.QUIT C.SET SYSMENT TO DEFAULT D.THISFORM.RELEASE √3. 为菜单选项加入热键的方法是在菜单设计器中该选项的名称后加 ______。 A. 该字母名称 B. \ - √ C.\< 字母 D.Ctrl+ 字母4. 扩展名为 mnx 的文件是 ______。 A.备注文件 B. 项目文件 C. 表单文件 D. 菜单文件 √5. 快捷菜单的调用代码通常设置与某个对象的 ______ 事件中。 A.Activate Event B.RightClick Event √ C.Init Event D.Destroy Event6. 在“菜单设计器”中,“文件”菜单项的键盘访问键是 F ,在菜单名称中应该键入 ______。 A. 文件 F B. 文件 +F C. 文件 (\<F) √ D.F>文件

练习

Page 12: 第九章 菜单与工具栏的设计与应用

快捷菜单是用户点击鼠标右键时弹出的菜单。快捷菜单设计好后必须生成菜单程序(扩展名为 .mpr ),然后设置在某个事件发生时调用它(一般是鼠标右击的事件)。

9.4.1 建立快捷菜单

“ 文件”→“新建”→“菜单” →“新建文件” →“快捷菜单”

图 9-15 “ 新建菜单”对话框9.4.2 调用快捷菜单

快捷菜单建立后,必须生成菜单程序( “菜单”→“生成” →单击“生成”按钮)然后就可以使用命令调用它。快捷菜单是在用户单击右键后出现的,因此快捷菜单的调用通常发生在某个对象的 RightClick 事件中。

三、快捷菜单的设计与使用

Page 13: 第九章 菜单与工具栏的设计与应用

例 1 :为某表单的文本框设计快捷菜单,能实现对文本框内容的复制、剪切和粘贴。

1 )新建一个快捷菜单(“文件”→“新建”→“菜单” →“新建文件” →“快捷菜单”),单击“插入栏”按钮,利用出现的“插入系统菜单栏”对话框,将系统菜单的复制、剪切和粘贴选项作为菜单选项插入。

2 )将菜单保存为 kjcd.mnx ,并生成菜单程序文件 kjcd.mpr 。

3 )在设计器中打开表单,选中需要弹出快捷菜单的文本框,设置其 RightClick Event事件代码如下: Do kjcd . mpr

运行表单时,当在文本框中选中文本后右键单击时出现所设快捷菜单。

三、快捷菜单的设计与使用

Page 14: 第九章 菜单与工具栏的设计与应用

9.5.1 建立自定义工具栏

要建立自定义工具栏,可以从 VFP 的 ToolBar 类派生得到一个工具栏类,再利用表单设计器或程序方式向表单集或主窗口添加即可。

1 .建立工具栏类

利用“文件 /新建”→“类”选项,单击“新建”按钮建立一个新类;或在项目管理器中的“类”选项卡中建立一个新类。

在弹出的“新建类”对话框中设置类名,“派生于”选择 Toolbar ,并在“存储于”中指明该类存储于哪一个类文件中,如图 9-19所示。设置完毕后单击“确定”按钮。

图 9-19 新建类

四、工具栏的建立和应用

Page 15: 第九章 菜单与工具栏的设计与应用

2 .设计工具栏类

在打开的“类设计器”窗口中对 myToolbar 类进行设计,设计的方法与表单设计的方法类似:利用表单控件工具栏向其中加入命令按钮组或命令按钮对象,并定义其属性、编写按钮的 Click 事件过程。

3 .设置工具栏的属性及方法

在工具栏中添加了对象以后,可以设置工具栏的属性和方法。工具栏有 28个属性, 30个方法,表 9-1说明了比较常用的属性和方法。

属性或方法名 说 明Caption 工具栏的标题ControlBox 工具栏在运行时刻是否包含控制菜单框Movable 在运行时刻用户是否可以移动工具栏Name 工具栏的名称ToolTipText 控件工具的提示文本ShowTips 是否显示工具栏的提示文本Sizeable 在运行时用户是否可以调整工具栏的大小Dock 停放或移出工具栏AfterDockEvent 工具栏停放后发生的动作BeforeDockEvent 工具栏停放前发生的动作

四、工具栏的建立和应用

Page 16: 第九章 菜单与工具栏的设计与应用

4 .将工具栏加到表单中

工具栏设计好以后,可将其放到表单集中。向表单集中添加工具栏有两种方法:一是利用表单设计器,另外可以利用程序代码。

( 1 )利用表单设计器

新建一个表单,在表单控件工具栏中单击“查看类”,在弹出的打开对话框中选择自定义工具栏的类文件,确定后可以看到表单控件工具中出现了刚才设计的类: myToolbar 。使用添加控件的方法向表单中添加一个自定义工具栏对象。由于 VFP 只在表单集中添加工具栏,所以系统会出现提示信息:“要添加表单,需要一个表单集对象,创建一个吗?”选择“是”建立一个表单集。由此可见,工具栏是一类特殊的表单对象。

以上操作完成后,自定义工具栏就添加在表单集中了。保存并运行添加工具栏的表单集,自定义工具栏也随之运行,和 VFP 的工具栏一样,用户可以随意移动它的位置,表单的运行结果如图 9-20所示。

图 9-20 包含工具栏的表单集

四、工具栏的建立和应用

Page 17: 第九章 菜单与工具栏的设计与应用

( 2 )利用程序代码

除了使用“表单设计器”以外,还可以使用程序代码在表单集中添加工具栏。方法是在表单集的 Init 事件中使用如下命令:

SET CLASSLIB TO 工具栏类

THIS. ADDOBJECT(' 工具栏类库名 ' , ' 工具栏类名 ')

THIS. .工具栏类库名. SHOW

9.5.2 向顶层表单中添加自定义工具栏

用普通的建立工具栏的方法给顶层表单添加工具栏,会发现工具栏不能正常显示。事实上,工具栏被顶层表单挡在后面了,即使你把顶层表单的 SHOW WINDOW属性设置为“最上层表单”、把 AlwaysOnTop属性设置为 .T.也没用。这是因为工具栏是一种特殊的表单,而在VFP 中除了应用程序对象 _VFP 和 _SCREEN 对象,没有其他任何表单的层级比顶层表单高。因此要给顶层表单程序添加工具栏,必须把工具栏做在顶层表单本身上。下面的例子说明了这种方法。

四、工具栏的建立和应用

Page 18: 第九章 菜单与工具栏的设计与应用

例 9-5 为顶层表单添加自定义工具栏。

操作步骤如下:

1 )在类库MyVcx 中建立一个工具栏类 topToolBar ,

将工具栏的 ShowWindow属性设置为 1—最上层表单,

如图 9-21 所示。

2 )给顶层表单添加一个自定义属性 formToolBar 。

选择菜单“表单 /新建属性”,出现“新建属性”对话框,在“名称”后输入属性名称: formToolbar 。单击“添加”按钮,新的属性就添加到了表单属性对话框中。

3 )在表单的 Activate 事件中输入以下代码:

THIS.formToolBar=NewObject("topToolBar","myVcx")

THIS.formToolBar.show()

THIS.formToolBar.dock(0)

保存并运行表单,结果如图 9-22 所示。

图 9-21 设计自定义工具栏

图 9-22 顶层表单中的自定义工具栏

四、工具栏的建立和应用

Page 19: 第九章 菜单与工具栏的设计与应用

五、协调菜单与自定义工具栏

应用系统的菜单中通常包含了系统的大部分功能,如果某些菜单命令使用频繁,可创建自定义工具栏,包含那些频繁使用的菜单命令,这样用户在需要这些命令时只需简单地按动按钮就可以了。如果应用系统中既有菜单,又有工具栏,则需要使菜单命令和工具栏协调同步。例如,菜单项应执行与对应工具栏按钮相同的任务,另外,如果某个工具栏按钮禁用,则与它相应的菜单命令也应是灰色,不可选取。

要使菜单与工具栏相协调,需要做到:

1 )无论用户使用工具栏按钮,还是使用与按钮相关联的菜单项,都执行同样的操作。

2 )相关的工具栏按钮与菜单项具有相同的可用或不可用属性。

要达到以上目的,可遵循如下步骤:

1 )通过定义工具栏类来创建工具栏,添加命令按钮,并将要执行的代码包括在对应于此命令按钮的 Click 事件的方法程序中。

2 )创建与之协调的菜单。在“菜单设计器”中,根据工具栏上的每个按钮创建对应的子菜单;设置子菜单项的“结果”为“命令”,并调用相关工具栏按钮的 Click 事件对应的代码。

例如,如果工具栏按钮的名字为 cmdA ,表单文件名为 myform ,可以在子菜单项命令编辑框中添加如下代码:

myform.toolbar.cmdA.Click

Page 20: 第九章 菜单与工具栏的设计与应用

五、协调菜单与自定义工具栏

3 )设置菜单与工具栏具有相同的禁用属性。单击菜单项的“选项”栏按钮,打开“提示选项”对话框,选择“跳过”。在“表达式生成器”中输入表达式,指出当工具栏命令按钮失效时,菜单应该为禁用状态。例如,如果工具栏按钮的名称为 cmdA ,可以在“跳过”框中输入如下代码:

NOT myform.toolbar.cmdA.Enabled

按钮的状态可根据各个表单运行时所处的状态来确定,设置其 Enabled属性为 .T. (可用)或 .F. (禁用)即可。

4 )生成菜单程序。

5 )把菜单添加到拥有工具栏的表单集中。若生成菜单的名字为 mainmenu.mpr ,则在表单集的初始化方法中添加如下代码:

Do mainmenu.mpr with this

当用户打开菜单时, VFP 计算“跳过”条件的值,如果相关的工具栏命令不可用,则菜单也不可用。当用户选择菜单项时,则执行相关工具栏命令的 Click 事件代码,保证了菜单与对应工具按钮执行相同的操作。