|
菜单的设计时刻修改是指在应用程序运行前对菜单系统所进行的更改。包括添加、删除、移动和恢复菜单组件,以及设置菜单组件在运行时不随条件更改而变化的属性。
添加自定义菜单栏
如果要设计一组和当前Office应用程序的内置菜单栏或菜单栏有很大差别的菜单,需要创建一个新的菜单栏。这可以在Microsoft Access中使用“自定义”对话框,或者在Microsoft Excel、Word和owerPoint中使用Visual Basic 来实现。
使用“自定义”对话框
在Microsoft Access中,“自定义”对话框提供了一种添加自定义菜单栏的便利方法。
在Microsoft Access中添加菜单栏
如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
在“工具栏”表中,单击“新建”按钮。
在“工具栏名称”一栏内,键入新菜单栏的名字,然后单击“确定”。
出现一个该名字的浮动空菜单栏。
单击“属性”,显示“工具栏属性”对话框。
在“类型”一栏内,单击“菜单栏”。
用户还可以在“工具栏属性”对话框中设置自定义菜单栏的其他属性。要做更进一步的了解,请参考“Building Applications with Microsoft Access 97”的第一章。
这个新的菜单栏被添加到“工具栏”表的“工具栏”列表里。
使用Visual Basic
用户需使用CommandBars集合的Add方法来创建一个新的菜单栏;Add方法中的参数MenuBar决定了所创建的CommandBar 对象是否被显示成菜单栏。下面的例子创建了一个名叫“Custom Menu Bar”的新菜单栏。
Set cstm = CommandBars.Add(Name:="Custom Menu Bar", Position:=msoBarTop, _
MenuBar:=True, Temporary:=False)
在Microsoft Excel、Word和PowerPoint里,必须使用Visual Basic 创建新的菜单栏。在Microsoft Access 中既可以用Visual Basic 也可以用“自定义”对话框。
添加菜单
用户可以向任何内置或自定义菜单栏中添加一个菜单。因为Microsoft Office 应用程序能够在不同的内容中显示不同的内置菜单栏,所以也可以在不只一个菜单栏中添加一条相同的命令,以此保证用户无论是在什么上下关系里都可以使用该命令。例如,在Microsoft Excel 中,用户可能想给每个菜单栏添加一个专门的Accounting菜单,于是公司里的雇员可以在任何工作表里运行相应的宏。
在向菜单栏添加菜单时,用户可以为该菜单指定访问键;当显示菜单时,访问键下面加有下划线。
注释 虽然Microsoft Office应用程序可以在“自定义”对话框的“工具栏”表中列出包含快捷菜单的工具栏,但是用户既不能直接向这些工具栏添加自定义快捷菜单,也不能从中删除内置的快捷菜单。但是,用户能够在快捷菜单上添加、删除或自定义菜单项。要做更多的了解,请参考本节后面的“添加和修改快捷菜单”的内容。
使用“自定义”对话框
“自定义”对话框为向内置或自定义菜单栏添加菜单提供了一种便利的方法。
向菜单栏添加自定义菜单
如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果要进行修改的菜单栏没有显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框内打上对钩。
在“命令”表中,在“类别”一栏内单击“新菜单”。
将“新菜单”一项从“命令”栏拖到菜单栏中想添加菜单的地方。
在菜单栏中的“I”形条指出了在放开鼠标键时新菜单添加的位置。
在新菜单上单击鼠标右键,然后在“名字”栏中键入一个名字。在为该菜单设定的作为访问键的字母前面键入一个“&”符。
当单击该菜单的名字时,就显示出一个空菜单。要了解有关向新菜单中添加菜单项的内容,请参看本节后面“添加命令和命令分组”的内容。
“自定义”对话框还为向内置或自定义菜单栏添加任何内置菜单的副本提供了一种快捷的方法。用户可以自定义副本中的命令而不会影响到原来的内置菜单。
向菜单栏添加内置菜单的副本
如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果要进行修改的菜单栏没有显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框打上对钩。
在“命令”表中,在“类别”一栏内单击“内置菜单”。
将“内置菜单”一项从“命令”栏拖到菜单栏中想添加菜单的地方。
在菜单栏中的“I”形条指出了在放开鼠标键时新菜单添加的位置。
技巧 用户也可以打开包含了要被复制的菜单的菜单栏,然后按下“CTRL”,同时将该菜单从中拖到另一个菜单栏里,完成复制。
使用Visual Basic
用户需使用CommandBarControls集合中的Add方法来向CommandBar对象添加菜单,该对象表示某个菜单栏。在msoControlPopup里设置Add方法的Type参数指示所添加的控件用来显示一个菜单。显示菜单的控件叫做pop-up(弹出)控件。参数Before指示新菜单在原有菜单栏诸菜单中的位置。通过Add法设置对象CommandBarPopup的Caption属性,用于指定菜单的名称和访问键。以下这个Microsoft Excel的例子在工作表菜单栏的“窗口”菜单左边添加了一个名为“Accounting”的新菜单。
Set cstmAccounting = CommandBars("Worksheet Menu Bar").Controls _
.Add(Type:=msoControlPopup, Before:=9)
cstmAccounting.Caption = "&Accounting"
注释 用户在新菜单的名称里作为该菜单访问键的字母前面加一个“&”符。一旦添加好了菜单,当用户通过Controls(Index)引用该菜单时,可以在菜单名中使用“&”符,也可以不用。
添加子菜单
子菜单是附加在另一个菜单(父菜单)旁边,靠近某个菜单项(子菜单标题) 的菜单。用户可以给菜单、其他的子菜单和快捷菜单添加子菜单。
当用户单击菜单栏中的菜单名显示出该菜单的各项时,可以将鼠标指到父菜单中的子菜单标题上,这时子菜单上的菜单项就显示出来。类似于首先给菜单栏添加一个空菜单(有名字但没有菜单项)然后再添加某些菜单项,用户也须首先给父菜单添加一个空的子菜单,然后再添加菜单项。
使用“自定义”对话框
使用“自定义”对话框来给另一个菜单添加子菜单。
向菜单添加子菜单
如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果包含要进行修改的菜单的菜单栏没有显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框内打上对钩。
在“命令”表中,在“类别”一栏内单击“新菜单”。
将“新菜单”一项从“命令”栏拖到菜单栏中想添加子菜单的地方。
为了指出新子菜单的位置,把它从菜单名(如果有必要,随同后面的子菜单题注)上拖过,以此来打开要添加子菜单的菜单或子菜单,再拖到它在该菜单或子菜单中所处的位置上,然后放开鼠标左键。在菜单栏中的水平的“I”形条指出了在放开鼠标左键时子菜单添加的位置。
在新的子菜单上单击鼠标右键,然后在“名字”栏中键入一个名字。在为该子菜单设定的作为访问键的字母前面键入一个“&”符。
当单击该子菜单的名字时,就显示出一个空的子菜单。要了解有关如何向新的子菜单中添加菜单项,请参看本节后面“添加命令和命令分组”一节的内容。
使用Visual Basic
用户需使用CommandBarControls集合的Add方法来向CommandBar对象添加子菜单,该对象表示另一个菜单栏。在msoControlPopup里设置Add方法的Type参数用来指定出添加的控件是一个pop-up(弹出)控件-类型和指示菜单栏中某个菜单的控件相同。参数Before指定了新菜单在原有菜单栏诸菜单中的位置。通过Add方法设置CommandBarPopup对象的Caption属性,用于指定子菜单的名称和访问键。在下面这个Microsoft Excel的例子中在工作表菜单栏的Accounting菜单底下添加了一个名为“Product”的新的子菜单。
Set cstmAcctProduct = CommandBars("Worksheet Menu Bar").Controls("Accounting") _
.Controls.Add(Type:=msoControlPopup)
cstmAccProduct.Caption = "&Product"
注释 用户在新子菜单的名称里作为该菜单访问键的字母前面加一个“&”符。一旦添加好了子菜单,当用户通过Controls(索引)引用该子菜单时,可以在子菜单名中使用“&”符,也可以不用。
添加命令和命令分组
用户可以给任何内置或自定义的菜单或子菜单添加命令,也可以修改其外观并且进行直观上的逻辑分组。本节讨论如何向菜单和子菜单添加命令。下面的一节讨论如何添加快捷菜单以及向快捷菜单添加菜单项这一特殊问题。
注释 虽然可以向菜单和子菜单添加文本框、列表框以及组合框,但这通常不是显示或返回信息的最好办法。如果要添加自定义文本框、列表框和组合框,须使用和把它们添加到工具栏中相同的技术(参考本章后面的“工具栏的设计时刻修改”一节的内容)。
使用“自定义”对话框
“自定义”对话框提供了向菜单和子菜单添加菜单项的一种简便的方法。
向菜单或子菜单添加内置命令
如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果包含要进行修改的菜单的菜单栏没有显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框打上对钩。
在“命令”表中,在“类别”一栏中选择命令的类别。
该类别的所有命令都列在“命令”一栏中。
将命令从“命令”栏中拖到菜单或子菜单中添加该命令的位置。
为了指出命令的位置,把该命令从菜单名(如果有必要,随同后面的子菜单标题)上拖过,以此来打开要添加命令的菜单或子菜单,再拖到它在该菜单或子菜单中应处的位置上,然后放开鼠标左键。在菜单栏中的水平的“I”形条指出了在放开鼠标左键时命令添加的位置。
技巧 用户也可以打开包含了要被复制的内置命令的菜单栏,然后按下“CTRL”,同时将该命令从中拖到另一个菜单栏里,完成复制。
用户也可以从
“自定义”对话框也提供了向内置或自定义菜单栏添加自定义命令的一种快捷方法。但是,每种Microsoft Office应用程序都包含了不同的技术来使用“自定义”对话框完成该功能。下面的段落介绍了这些区别。
Microsoft Access 要添加运行宏的命令项,应该按照和向菜单添加内置命令相同的步骤来完成。在“类别”栏中,单击“所有宏”。将所需的宏从“命令”表拖到希望它在菜单中所处的位置上。要向菜单添加Function过程,应该按照和向菜单添加内置命令相同的步骤来完成。在“类别”栏中,单击任何一种类别,然后将任和一项从“命令”表拖到它在菜单中应处的位置上。在该项上单击鼠标右键,任何单击“控制属性”,显示“控制属性”对话框。在“标题”栏内,删除当前的名字,任何键入命令的新名字,在“所在操作”栏内,键入运行Visual Basic Function过程的表达式。该表达式必须采用以下语法:=functionname()。
Microsoft Excel 按照和向菜单添加内置命令的过程相同的步骤来完成;在“类别”栏内,单击“宏”,然后将“自定义菜单项”从“命令”栏拖到它在菜单中应处的位置。在新菜单项上单击鼠标右键,任何单击“指定宏”。在“指定宏”对话框的“宏名”一栏中,键入要运行的宏的名字。
Microsoft Word 按照和向菜单添加内置命令的过程相同的步骤来完成;在“类别”栏内,单击“宏”,然后将宏从“命令”栏拖到希望它在菜单中所处的位置。
技巧 在Word里,如果写了一个与内置Word命令同名的过程(或者,如果写了一个在与某个内置Word命令同名的模块内名为“MAIN”的过程),只要包含该过程的模块有效,那么该过程将替换内置命令的功能。在所有出现该命令的菜单里的该命令的副本均执行替换过程。要对控制自定义内容作更进一步的了解,请参考本章前面的“用户界面的更改范围”一节的内容。要对修改Word命令作更多的了解,请参考第七章,“Microsoft Word 对象”。
Microsoft PowerPoint 按照和向菜单中添加内置命令相同的步骤来完成;在“类别”栏内,单击“宏”,然后将宏从“命令”栏拖到希望它在菜单中所处的位置。
修改命令的外观
在菜单中的任何命令都可以在该命令的名字旁边显示出一个图标按钮。命令的“样式”决定了是否在命令旁边显示出一个图标按钮。“自定义”对话框打开后,使用快捷菜单上的命令来设定命令的式样。下表描述了式样对菜单命令的影响。
式样
菜单的外观
默认式样
图标按钮和名字
纯文本(在菜单中)
只有名字
纯文本(一般)
只有名字
图标和文本
图标按钮和名字
注释 在默认情况下,有些内置菜单命令没有和它们相关联的图标按钮,无论设置何种式样都不会显示图标。但是,可以给任何内置菜单命令添加图标。
当“自定义”对话框打开后,可以添加或修改菜单命令旁边的图标按钮。下表列出了可以使用的技术。
目 的
做 法
使用预定义的图标按钮
用鼠标右键单击该命令,指到“更改按钮图标”,然后单击要选择的图标。
复制和粘贴另一个命令的图标
用鼠标右键单击被复制的图标所属的命令,然后选择“复制按钮图标”。在自定义图标的命令上单击鼠标右键,然后选择“粘贴按钮图标”。
从图形程序复制和粘贴
在图形程序中,打开要复制的图标。选择和复制该图标(最好是16x16象素的图形)。切换回原应用程序,单击“粘贴按钮图标”。
编辑命令的当前按钮图标
在命令上单击鼠标右键,然后选择“编辑按钮图标”。在“按钮编辑器”中,可以改变图标的颜色和形状,调整图标在控件上的位置,并且可以对修改进行预览。当完成对图标的编辑后,单击“确定”。
用命令的原始按钮图标对命令进行复位
在命令上单击鼠标右键,然后选择“复位按钮图标”。
技巧 在Microsoft Access 中,可以使用“属性”对话框设置菜单命令的许多其他属性。要作更多了解,请参考“Building Applications with Microsoft Access 97”的第一章。
命令分组
用户可以在菜单中用线条将相关的命令分隔成组。线条本身并不是菜单项;而且可以在菜单中的任何一项前面设置出现分隔线。用户可以在“自定义”对话框中将一条命令设为一组命令中的第一项。
在菜单中开始一个命令组
如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单的“工具栏”上,然后单击“自定义”。
如果包含要进行修改的菜单的菜单栏尚未显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框打上对钩。
在希望上方出现分隔线的菜单项上单击鼠标右键,然后选择“开始一组”。
在该项上再次单击鼠标右键,在快捷菜单上的“开始一组”旁边出现一个对钩。要去掉菜单项之前的分隔线,可以在该项上单击鼠标右键然后再次选择“开始一组”(不再出现对钩)。
使用Visual Basic
用户需使用CommandBarControls集合的Add方法来给CommandBar对象添加新的菜单项,该对象表示某个菜单或子菜单。要添加内置命令,可以使用Add方法的参数Id指定该命令的ID编号。在下面这个例子在“Custom Menu Bar”菜单栏的 “Quick Tools”菜单里添加了“Spelling”命令。
Set mySpell = CommandBars("Custom Menu Bar").Controls("Quick Tools") _
.Controls.Add(Id:=2)
要对如何确定Microsoft Office 应用程序的内置命令的ID编号做进一步了解,请参考本章后面的“菜单项和菜单栏控件ID编号”一节的内容。
要添加一条菜单命令,可以先添加一条新的菜单项,然后设置OnAction 属性来指定点击该项时运行的Visual Basic程序。设置Add 法的参数Type为msoControlButton指出该菜单项是一条命令。在下面这个Microsoft Excel例子里在工作表工具栏的“文件”菜单中添加了一个Open Database菜单项。当用户点击该菜单项时,Microsoft Excel 运行Visual Basic程序OpenDatabaseProc。Open Database直接出现在File菜单中Close命令的上面。
Set databaseItem = CommandBars("Worksheet Menu Bar").Controls("File") _
.Controls.Add(Type:=msoControlButton, Before:=3)
With databaseItem
.Caption:="Open Database"
.OnAction:="OpenDatabaseProc"
End With
用户可以在Visual Basic 中设置表示菜单命令的对象它的许多属性,以此修改命令的外观。要做更进一步了解,请参考“帮助”中的Style属性和FaceID 属性,以及CommandBarButtion对象的其他属性和方法的帮助主题。
设置开始一组菜单项的菜单项(也就是说,前面有一线条的命令项),需要设置表示菜单项的CommandBarButton、CommandBarPopup或者CommandBarComboBox对象的BeginGroup属性为True(真)。要去除该线条,则设置属性BeginGroup为False(假)。使用Controls(Index) 来返回一个表示该项的对象,此处的Index是指菜单项的标题或索引号。下面的例子在“文件”菜单的Open Database 命令(在上面的例子里添加的)前面添加了一条分隔线。
Set databaseItem = CommandBars("Worksheet Menu Bar").Controls("File") _
.Controls("Open Database")
databaseItem.BeginGroup = True
添加和修改快捷菜单
用户可以Microsoft Access中使用“自定义”对话框,或者在Microsoft Excel 中使用Visual Basic 来添加和修改自定义快捷菜单。在Microsoft Access、Word和PowerPoint中,用户还可以使用“自定义”对话框来修改内置快捷菜单(在Microsoft Access还可以是自定义快捷菜单)。
在Microsoft Access中,用户可以给报表、窗体以及窗体上的控件指定快捷菜单;在对象上单击鼠标右键,随时就可以显示出相应的快捷菜单。要了解在Microsoft Access报表和窗体中使用快捷菜单的内容,请参考“Building Applications with Microsoft Access 97”的第一章。
Microsoft Excel提供事件-BeforeRightClick-可以通过修改内置快捷菜单或显示自定义快捷菜单来响应它。
注释 在应用程序窗口内单击鼠标右键时,Word和PowerPoint不会显示自定义快捷菜单。
使用“自定义”对话框
在Microsoft Access 中,“自定义”对话框提供了添加自定义快捷菜单的一种便利方法。
在Microsoft Access中添加快捷菜单
如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
在“工具栏”表中,单击“新建”按钮。
在“工具栏名称”一栏中,键入新快捷菜单的名字,然后单击“确定”。
屏幕上显示出有着该名字的浮动的空工具栏。
单击“属性”,显示“工具栏属性”对话框。
在“类型”一栏中,选择“快捷菜单”。
这时,原来浮动的空工具栏消失了。要从“自定义”对话框显示快捷菜单,单击“工具栏”表,然后在“工具栏”表内“快捷菜单”旁边的复选框中打上对钩。包含所有快捷菜单的工具栏就显示出来;刚才创建的快捷菜单出现在工具栏的最后。
在Microsoft Access、Word和PowerPoint中,用户可以使用“自定义”对话框修改内置快捷菜单。(在Microsoft Access中,还可以用这种办法修改自定义快捷菜单。)要添加子菜单或快捷菜单,可以按照本节前面“添加子菜单”内给出的步骤来做。要添加命令,可以按照本节前面“添加命令和命令分组”内给出的步骤来做。不要忘记在“工具栏”一栏内“快捷菜单”旁边的复选框中打上对钩,这样才能显示出包含打开“自定义”对话框时所有有效快捷菜单的工具栏。
使用Visual Basic
用户可以使用CommandBars集合的Add方法来创建新的快捷菜单;将Add方法的参数Position设置为msoBarPopup,以此指出所创建的CommandBar对象应显示为快捷菜单。下面的例子创建了一个名为“Shortcuts1”的新快捷菜单。
Set cstm = CommandBars.Add(Name:="Shortcuts1", Position:=msoBarPopup, _
MenuBar:=False, Temporary:=False)
在Microsoft Excel、Word和PowerPoint中,必须使用Visual Basic来创建新的快捷菜单。而在Microsoft Access中,既可以使用Visual Basic,也可以使用“自定义”对话框。
要在任何Microsoft Office应用程序中用Visual Basic修改自定义或内置快捷菜单,可以采用和前面章节讲述的使用Visual Basic向菜单里添加子菜单或命令相同的技术。使用CommandBars(name) 返回表示该快捷菜单的一个CommandBar对象,这里的name是指快捷菜单的名字。于是用户可以添加或修改任何在CommandBar对象中有效的Controls集合里的元素。
删除菜单组件
用户可以从菜单中删除内置或自定义的菜单项,可以从菜单栏中删除内置或自定义的菜单,还可以删除自定义菜单栏。但是要注意,即使可以删除快捷菜单和内置菜单栏上的所有项,还是不能删除快捷菜单或内置菜单栏本身。
删除内置菜单组件可以帮助用户根据需要定制自己的Visual Basic应用程序。例如,用户可能想从菜单中删除某条内置命令,并且用一个自定义命令的版本来替换它,该命令可为用户完成特殊的任务。用户也可能要删除某个菜单项以简化界面或者降低无经验者选择使用不适当命令的可能性。
注释 用户可以恢复已经删除的内置菜单栏、菜单或菜单项。但是,不能恢复自定义的菜单栏、菜单或菜单项;必须重新创建它们。
使用“自定义”对话框
打开“自定义”对话框的情况下,用户可以删除任何菜单组件。
删除菜单系统组件
如果“自定义”对话框尚未打开,将鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果包含要删除的菜单组件的菜单栏尚未显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框打上对钩。
在要删除的菜单组件上单击鼠标右键,然后在快捷菜单中选择“删除”。
要删除一个完整的自定义菜单栏,可以打开“自定义”对话框,选中“工具栏”表内“工具栏”一栏中该菜单栏的名字,然后单击“删除”按钮。就将内置菜单栏删除了。
使用Visual Basic
用户可以使用Delete方法来删除自定义菜单栏、自定义或内置下拉菜单或子菜单以及自定义或内置菜单项。但是不能删除内置菜单栏或快捷菜单。
以下Microsoft Excel中的例子删除了绘图菜单栏里的“编辑”菜单。
CommandBars("Chart Menu Bar").Controls("Edit").Delete
以下的例子删除名为“Custom Menu Bar”的自定义菜单栏。
CommandBars("Custom Menu Bar").Delete
要了解如何恢复已删除的内置菜单组件,请参考下面一节的内容。
恢复内置菜单组件
用户能够恢复已经被删除的内置菜单栏、菜单或菜单项。但是,不能恢复已经删除的自定义菜单栏、菜单或菜单项;必须重建它们。
使用“自定义”对话框
用户可以使用“自定义”对话框来再次恢复内置菜单或子菜单中各个原始的内置菜单项。同样地,在恢复内置菜单栏的同时在该菜单栏中的所有菜单和子菜单也被重新恢复。
恢复内置菜单
如果“自定义”对话框尚未打开,用鼠标指到“视图”菜单中的“工具栏”上,然后单击“自定义”。
如果包含将要被恢复的菜单的菜单栏尚未显示出来,在“工具栏”表的“工具栏”一栏内该菜单栏名字旁边的复选框打上对钩。
在要删除的菜单或子菜单上单击鼠标已经,如何在快捷菜单中选择“恢复”。
要恢复内置菜单栏,需要打开“自定义”对话框,选中“工具栏”表内“工具栏”一栏中该菜单栏的名字,然后单击“恢复”按钮。
使用Visual Basic
使用Reset 方法恢复内置菜单栏、菜单或子菜单组件。
以下Microsoft Excel中的例子恢复了绘图菜单栏中的“编辑”菜单。
CommandBars("Chart Menu Bar").Controls("Edit").Reset
以下的Word中的例子恢复了内置菜单栏。
CommandBars("Menu Bar").Reset
|