您正在查看: 标签 写代码 下的文章

使用命令栏

使用命令栏

一般来说,要为 Visual Basic 应用程序创建或修改命令栏、菜单栏和快捷菜单,可以应用该容器应用程序的自定义功能部件。用容器应用程序的自定义功能部件对工具栏、菜单栏、快捷菜单所作的修改,称为“设计期”修改。有关用容器应用程序作设计期修改的详细信息,请参阅该应用程序的联机帮助。

用 Visual Basic 代码中 Microsoft Office 对象模型的 CommandBars 部分可添加和修改工具栏、菜单栏和快捷菜单(及其内部部件)。可书写代码以创建工具栏和菜单栏。实际上,该代码模拟了设计期修改过程。然而,在一些容器应用程序中,可能需要用这种 Visual Basic 代码和自定义接口的组合来设计 Visual Basic 应用程序。以下是一些需用代码和容器应用程序接口组合的地方:

  • 如果容器应用程序没有提供接口来添加或修改工具栏中的编辑框、下拉式列表框或组合框,那么需用 Visual Basic 代码来添加和设计这些控件。
  • <LI>如果容器应用程序提供了创建工具栏的接口,但没有提供创建新的菜单栏的接口,那么就需用 Visual Basic 来创建菜单栏。用 Visual Basic 创建了菜单栏后,就可用容器应用程序接口在该菜单栏上设计菜单了。</LI>
    
    <LI>如果容器应用程序没有提供在显示自定义接口时显示自定义快捷菜单的方法,那么就需用 Visual Basic 代码修改那些快捷菜单。</LI>
    

通过书写放在 Visual Basic 应用程序中的代码可在运行应用程序时修改工具栏和菜单栏(例如,可书写代码使菜单栏中某条命令在一定的条件下无效,或根据用户的选择在工具栏中添加按钮)。在 Visual Basic 应用程序运行时,由代码引起的改变称为“运行时间”修改。

参阅以下主题,以了解如何用 Visual Basic 代码对工具栏和菜单栏作设计期修改和运行时间修改。

添加和修改工具栏

添加和管理菜单栏和菜单项

添加和显示快捷菜单

注意 任务窗格是一种 CommandBar 对象,可通过如下方式引用:

Dim cbTaskPane As CommandBar
Set cbTaskPane = Application.CommandBars("Task Pane")
MsgBox "The current task pane's title is """ & cbTaskPane.Controls(1).Caption & """"

但是,当许多命令栏方法和属性应用于“任务窗格”时,将表现出与普通 CommandBar 对象不同的行为。例如,DeleteShowPopup 方法没有效果,更改AdaptiveMenuContextNameNameLocalProtection 属性的值也没有效果。

Dropdown 方法

Dropdown 方法

使用 Dropdown 方法可以将指定组合框中的列表强行向下拉开。

expression.Dropdown

expression 必需。返回“Applies To”列表中的一个对象的表达式。

说明

例如,在数据输入期间,当供应商代码控件获得焦点时,使用这个方法可以使列有供应商代码的组合框向下拉开。

如果指定的组合框控件没有焦点,则会出现错误。使用该方法与在控件获得焦点时按 F4 的效果相同。

示例

下面的示例显示了在 GotFocus 事件过程中,当名为 SupplierID 的组合框获得焦点时,如何使用 Dropdown 方法强行使组合框向下拉开。

Private Sub SupplierID_GotFocus()Me!SupplierID.Dropdown
End Sub

DoMenuItem 方法

DoMenuItem 方法

显示 Microsoft Access 的对应菜单或工具栏命令。

expression.DoMenuItem(MenuBar, MenuName, Command, Subcommand, Version)

expression 必需。返回“Applies To”列表中的一个对象的表达式。

MenuBar 必需 Variant 型。对“窗体”视图中的菜单栏使用固有常量 acFormBar。对于其他视图,请使用菜单栏参数列表中的视图所对应的数字,如 Microsoft Access 上一版的“宏”窗口中所示(列表由 0 开始向下计数)。

MenuName 必需 Variant 型。可以使用下列固有常量之一:

固有常量:
acFile
acEditMenu

acRecordsMenu

可以将 acRecordsMenu 仅用于 Microsoft Access 2.0 和 Microsoft Access 95 数据库的“窗体”视图菜单栏中。对于其他菜单,请使用菜单名称参数列表中的菜单所对应的数字,如 Microsoft Access 上一版的“宏”窗口中所示(列表由 0 开始向下计数)。

Command 必需 Variant 型。可以使用下列固有常量之一:

固有常量:
acNew
acSaveForm

acSaveFormAs

acSaveRecord

acUndo

acCut

acCopy

acPaste

acDelete

acSelectRecord

acSelectAllRecords

acObject

acRefresh

对其他命令,可以使用命令参数列表中各命令所对应的数字,如在上一版 Microsoft Access 的“宏”窗口中所示(列表由 0 开始向下计数)。

Subcommand 可选 Variant 型。可以使用下列固有常量之一:

固有常量:
acObjectVerb
acObjectUpdate

acObjectVerb 常量表示“编辑”菜单上“对象”命令的子菜单中的第一个命令。对象的类型决定了子菜单上的第一个命令。例如,对于“画笔”对象,该命令为“编辑”,表示该对象可以编辑。

对子菜单上的其他命令,使用在子命令参数列表中各子命令所对应的数字,如在上一版 Microsoft Access 的“宏”窗口中所示(列表由 0 开始向下计数)。

Version 可选 Variant 型。对 Microsoft Access 95 数据库的代码使用固有常量 acMenuVer70,对 Microsoft Access 2.0 版数据库的代码使用固有常量 acMenuVer20,而对于 Microsoft Access 1.x 版数据库的代码则使用固有常量 acMenuVer1X。该参数仅在 Visual Basic 中可用。

注意 该参数的默认值为 acMenuVer1X,所以对任何 Microsoft Access 1.x 版数据库的代码将不作更改进行运行。如果为 Microsoft Access 95 或 2.0 版数据库编写代码,并且希望通过 DoMenuItem 方法来使用 Microsoft Access 95 或 2.0 版的菜单命令,则必须将该参数设为 acMenuVer70acMenuVer20

同样,当在“宏”窗口中的“菜单栏”、“菜单名称”、“命令”及“子命令”操作参数列表中向下读数获取 DoMenuItem 方法参数所对应的数字时,如果 Version 参数为 acMenuVer70,则必须使用 Microsoft Access 95 列表,如果 Version 参数为 acMenuVer20,则必须使用 Microsoft Access 2.0 版列表,如果 Version 参数为 acMenuVer1X(或为空),则必须使用 Microsoft Access 1.x 版列表。

注意 对于该参数没有 acMenuVer80 设置。不能使用 DoMenuItem 方法显示 Microsoft Access 97 或 Microsoft Access 2000 命令(虽然 Visual Basic 代码中已有的 DoMenuItem 方法仍然有效)。请使用 RunCommand 方法代替。

说明

注意 在 Microsoft Access 97 中,DoMenuItem 方法由 RunCommand 方法取代。本版 Microsoft Access 中包含 DoMenuItem 方法只是为了与前一版本的 Microsoft Access 兼容。执行已有 Visual Basic 代码时,如果包含 DoMenuItem 方法,Microsoft Access 将显示相应的 Microsoft Access 2000 的菜单或工具栏命令。但是与宏中的 DoMenuItem 操作不同的是,当转换由上一版 Microsoft Access 创建的数据库时,Visual Basic 代码中的 DoMenuItem 方法不能转换为 RunCommand 方法。

上一版 Microsoft Access 中的某些命令在 Microsoft Access 2000 中不能使用,所以在 Visual Basic 中执行对应于这些命令的 DoMenuItem 方法时将引起错误。必须编辑 Visual Basic 代码,替换或删除这些 DoMenuItem 方法。

“宏”窗口的菜单名称、命令及子命令操作参数列表中的选项,取决于对前一版参数的选择。对每一个 MenuBarMenuNameCommandSubcommand 参数必须使用适当的数字或固有常量。

如果将 Subcommand 参数留空,但指定 Version 参数,则必须包含 Subcommand 参数的逗号。如果将 SubcommandVersion 参数留空,那么在 Command 参数后面不能使用逗号。

示例

下面的示例使用 DoMenuItem 方法执行 Microsoft Access 95 数据库“窗体”视图中“编辑”菜单上的“粘贴”命令:

DoCmd.DoMenuItem acFormBar, acEditMenu, acPaste, , acMenuVer70

下面的示例执行 Microsoft Access 2.0 版数据库“窗体”视图中“窗口”菜单上的“平铺”命令:

DoCmd.DoMenuItem acFormBar, 4, 0, , acMenuVer20