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

优质
小牛编辑
122浏览
2023-12-01

有些容器应用程序不提供新建菜单栏的方法,因此,需用 Visual Basic 创建菜单栏。在用 Visual Basic 创建了一个菜单栏之后,就可用容器应用程序接口或继续用 Visual Basic 定义该菜单栏。

在运行时间添加菜单栏

要在运行时间给应用程序添加一个菜单栏,可用CommandBars 集合的Add 方法并将MenuBar 参数指定为 True。以下示例将添加一个不可移动的菜单栏,并将该菜单栏固定在应用程序窗口的右边。

Set menubar = CommandBars.Add _
 (Name:="mBar", Position:=msoBarRight, MenuBar:=True)
With menubar
 .Protection = msoBarNoMove
 .Visible = True
End With

运行时间修改菜单栏

在运行时间可同时修改菜单栏及其控件。对菜单栏的修改可能会影响其外观或位置;对控件的修改取决于该控件的类型。下表是在运行时间修改菜单栏的最常用属性和方法。

属性或方法说明AddCommandBars 集合的Add 方法添加一个菜单栏并指定MenuBar 参数为 TrueEnabled如果该属性设置为True,那么用户可用 Visual Basic 代码显示指定的菜单栏;如果该属性设置为False,那么用户不能显示菜单栏,但该菜单栏将列在有效菜单栏列表中。Protection禁止用户对菜单栏进行特定操作。可将该值设置为以下MsoBarProtection 常量之一或组合:msoBarNoChangeDockmsoBarNoChangeVisiblemsoBarNoCustomizemsoBarNoHorizontalDockmsoBarNoMovemsoBarNoProtectionmsoBarNoResizemsoBarNoVerticalDockPosition指定新菜单栏相对于应用程序窗口的位置。可将其设置为以下MsoBarPosition 常量之一:msoBarLeftmsoBarTopmsoBarRightmsoBarBottommsoBarFloatingmsoBarPopup(用于创建快捷菜单)或msoBarMenuBar(Macintosh 专用)。Visible指定对用户是显示还是隐藏控件。如果该控件对用户是隐藏的,那么该菜单栏名仍将显示在有效命令栏列表中。

以下示例可实现:隐藏活动菜单栏并用一个临时菜单栏代替,该临时菜单栏固定在应用程序窗口右边,并且对用户处于保护状态。

Set oldMbar = CommandBars.ActiveMenuBar
Set newMbar = CommandBars.Add _
(Name:="newMenubar", Position:=msoBarRight, _
MenuBar:=True, temporary:=True)
With newMbar
 .Visible = True
 .Protection = msoBarNoMove
End With

在运行时间合并菜单栏

对加载应用程序中的自定义菜单栏,如果要指定其在容器应用程序中的表示方式,可用CommandBarPopup 对象的OLEMenuGroup 属性指定菜单栏合并的方式。

对菜单项作运行时间修改

对菜单项的修改范围取决于控件的类型。通常,按钮具有有效和隐藏两种状态,而编辑框、下拉式列表框和组合框可进行的操作更为多样化:可在列表中添加或删除列表项,也可根据选中的值确定要执行的动作。用户可将任意控件的动作改为内置功能或自定义功能。

下表是改变控件状态、动作或内容的最常用的属性和方法。

属性或方法目的Add在命令栏中添加一个菜单项。对内置控件,Type 变量可以是以下MsoControlType 常量之一:msoControlButtonmsoControlEditmsoControlDropdownmsoControlComboBoxAddItem在下拉式列表框或组合框的下拉式列表区中添加一个列表项。可为已有列表中的新项指定一个索引号,但其数值不能大于列表中的项目数,否则AddItem 方法失败。Style指定按钮外观是显示其图标还是显示其标题。该值可为以下MsoButtonStyle 常量之一:msoButtonAutomaticmsoButtonIconmsoButtonCaptionmsoButtonIconAndCaptionmsoButtonIconAndCaptionBelowmsoButtonIconAndWrapCaptionmsoButtonIconAndWrapCaptionBelowmsoButtonWrapCaptionOnAction指定当用户改变特定控件的值时要运行的过程。Visible指定控件对用户是显示还是隐藏。

以下示例在活动菜单栏的末尾添加一个命名为“Custom”的临时弹出式控件,然后在该自定义弹出式命令栏中添加一个按钮控件“Import”。

Set myMenuBar = CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, _
 Temporary:=True)
newMenu.Caption = "Custom"
Set ctrl1 = newMenu.Controls _
 .Add(Type:=msoControlButton, Id:=1)
ctrl1.Caption = "Import"
ctrl1.TooltipText = "Import"
ctrl1.Style = msoButtonCaption