Toolbar 控件包含用来创建工具栏的 Button 对象的集合。工具栏可与应用程序相关联。
一般情况下,工具栏中的按钮与应用菜单中的菜单项相对应,可以用它们来访问应用程序最常用的功能和命令。Toolbar 控件也可以包含其它控件,例如 ComboBox 控件或 TextBox 控件。
要创建工具栏,必须先将 Button 对象加入 Buttons 集合,每个 Button 对象可以拥有可选的文本,或者(并且)拥有相关联的 ImageList 控件提供的图象。可以用 Caption 属性为每个 Button 对象设置文本,用 Image 属性设置图象。在设计时,可通过“Toolbar 属性页”对话框加入 Button 对象。在运行时,可以用 Add 和 Remove 方法将按钮加入 Buttons 集合或从中删除。
要在设计时添加其它控件,只需在工具栏上绘制所需要的控件拖入工具栏即可。另外,还可以创建 Placeholder 样式的 Button 对象,并在 Resize 事件中将需要的控件盖在该按钮上。
在运行时,双击工具栏将弹出“自定义工具栏”对话框,以便用户隐藏、显示或重新排列工具栏的按钮。可以设置 AllowCustomize 属性来选用或禁用该对话框。还可以用 Customize 方法弹出“自定义工具栏”对话框。如果需要保存或恢复工具栏的状态,或允许最终用户这样做,可使用 SaveToolbar 和 RestoreToolbar 方法。
Toolbar 控件由 Buttons 集合中的一个或多个 Button 对象构成。在设计时和运行时均可创建 Button 对象。每个按钮可有图象、标题、工具提示,并且可以同时具有上述三种特性,如下所示:
每个按钮对象还有 Style 属性(在下面讨论),该属性决定了按钮的行为。
工具栏通常用图标代表应用程序的功能。例如,软盘的图标一般被理解为“保存文件”功能。要使工具栏能够显示这样的图象,必须首先将 ImageList 控件与 Toolbar 控件相关联。这项工作在设计时和运行时均可完成。
在设计时将 ImageList 控件和 Toolbar 控件相关联
在运行时将 ImageList 控件与 Toolbar 控件相关联,只需将 ImageList 属性设置为 ImageList 控件的名称,如下面的示例所示:
Private Sub Form_Load() 'Toolbar
控件名为“tlbTools
”,'ImageList
控件名为“imlTools
”。tlbTools.ImageList = imlTools
End Sub
在设计时创建 Button 控件
图 2.38 Toolbar 控件的属性页
在运行时创建 Button 对象的集合
下面的代码在 Form 对象的 Load 事件中创建一个 Button 对象,然后设置新的 Button 对象的 Key、Caption、TooltipText 和 Style 属性
Private Sub Form_Load() '
声明变量,然后用带Add
方法的Set
语句创建'
新的Button
对象,将对象变量赋值为该新Button
。'
用该引用设置对象的属性。Dim myButton As Button
Set myButton = tlbTools.Buttons.Add()
myButton.Key = "left"
myButton.Caption = "
左对齐"
myButton.ToolTipText = "
左对齐"
myButton.Style = tbrSeparator
End Sub
提示 同使用对象变量的方式相比,用带参数的 Button 集合的 Add 方法可以更有效地设置属性。这样上述代码可以被改写如下:
tlbTools.Buttons.Add , "left", "
左对齐", _
tbrSeparator
Button 对象的一个重要的属性是 Style 属性。Style 属性决定了按钮的行为特点,并且与按钮相关联的功能可能受到按钮样式的影响。下面列出了五种按钮样式以及它们的用途:
常数 | 值 | 用途 |
tbrDefault | 0 | 如果按钮所代表的功能不依赖于其它功能,使用 Default 按钮样式。例如,“保存文件”操作可以在任何时候进行。另外,如果按钮被按下,在完成功能后它会自动地弹回。 |
tbrCheck | 1 | 当按钮代表的功能是某种开关类型时,可使用 Check 样式。例如,在使用 RichTextBox 控件时,被选定的文本可被设置成粗体或非粗体。如果按下了该按钮,那么在再次按下该按钮之前,它将保持按下状态。 |
tbrButtonGroup | 2 | 当一组功能相互排斥时,可以使用 ButtonGroup 样式。相互排斥的意思是说一组功能同时只能有一个有效。例如,RichTextBox 控件中的文本只能是左对齐、右对齐或居中,在任何时刻都只有一种样式。注意:同一时刻只能按下一个按钮,但所有按钮可能同时处于抬起状态。 |
tbrSeparator | 3 | 分隔符类型只是创建宽度为八个像素的按钮,此外没有任何功能。分隔符样式的按钮可以将其它按钮分隔开。或者用它将 ButtonGroup 样式的按钮封闭起来。 |
tbrPlaceholder | 4 | 占位符样式按钮的功能如同“哑”按钮:该按钮的作用是在 Toolbar 控件中占据一定位置,以便显示其它控件(如 ComboBox 控件或 ListBox 控件)。 |
在设计时,可以很方便地在 Toolbar 控件中放置其它控件,例如 ComboBox、TextBox 或 OptionButton 控件。
在设计时将其它控件放入 Toolbar 控件
如果 Wrappable 属性设置为 True,则当最终用户改变窗体的大小时 Toolbar 控件会自动折行。尽管 Button 对象能够自动折行,但放置在它们上面的其它控件不能。要使其它控件能够折行,则首先要创建 Placeholder 样式的 Button 对象,然后在对应位置绘制其它控件(如上一主题所述)。并在 Form 对象的 Resize 事件中用 Move 方法重定位该控件,如下所示:
Private Sub Form_Resize() 'Toolbar
名为“tlbRTF
”'Button
对象的Key
是“btnFonts
”'Combobox
名为“cmbFonts
”'
用Move
方法将ComboBox
覆盖在'Button
对象的位置上With tlbRTF.Buttons("btnFonts")
cmbFonts.Move .Left, .Top, .Width
cmbFonts.ZOrder 0
End With
End Sub
在单击按钮(占位符和分隔符样式的按钮除外)时,发生 ButtonClick 事件。可以用按钮的 Index 属性或 Key 属性标识被单击的按钮。利用这些属性中的任意一个,可以用 Select Case 语句编写按钮的功能。如下面的代码示例所示:
Private Sub tlbRTF_Click(ByVal Button As Button) Select Case Button.Key Case "OpenFile" '
调用用户定义的函数打开文件。OpenFile
Case "Bold"
'
调用用户定义的函数以使文本变为粗体。BoldText
Case Else
'
处理其它情况。End Select
End Sub
在某些情况下,应用程序的函数可能返回不确定状态:返回的状态是两种或多种状态的组合。例如,如果用户选中 RichTextBox 中的文本,其中的一部分文本是斜体的,那么代表斜体的按钮既不能按下也不能抬起;因为文本既有斜体又有不是斜体的。为了表示这种不确定状态,需要将 MixedState 属性设置为 True。这将抖动按钮上的图象,以产生第三种状态。
当光标在某个 Button 对象上停留(但未按键)时,在按钮上出现称为 ToolTip 的文本。
设计时,在 Toolbar 控件“属性页”中的“工具提示文本”框中键入需要的文本,即可为按钮加入 ToolTip。
运行时,可通过设置 Button 对象的 ToolTipText 属性动态地改变 ToolTip。下面的代码出现在 CommandButton 控件中,它改变按钮的 Key 和 ToolTipText 属性:
Private Sub cmdChangeButton_Click() '
工具栏名为“tlbFunctions
”'
重新设置Key
属性为“1 funct
”的'
按钮的Key
和ToolTipText
属性。tlbfuncts.Buttons("1 funct"). _
ToolTipText = "Function 7"
tlbfuncts.Buttons("1 funct").Key = "7 funct"
End Sub
如果将 AllowCustomize 属性设置为 True,则最终用户双击该工具栏即可定制它。双击该工具栏将显示出“自定义工具栏”对话框,如下图 2.39 所示。
图 2.39 “自定义工具栏”对话框
另外,调用 Customize 方法也可显示出该对话框。
如果允许最终用户重新配置 Toolbar 控件,那么需要用 SaveToolbar 和 RestoreToolbar 方法保存和恢复该工具栏。例如,如果有多个用户同时使用同一应用程序,但他们的使用习惯不同,那么可以用 SaveToolbar 方法使用户能够创建自己的定制工具栏。然后创建一个登录过程,用来标识每个用户,并通过 RestoreToolbar 方法,根据登录信息恢复用户个人的工具栏。
SaveToolbar 方法将 Toolbar 控件的当前状态保存到系统注册表中。该方法需要三个参数。第一个参数 key 必须是整数。第二个和第三个参数:subkey 和 value 必须是字符串。要恢复同一 subkey 的工具栏的不同版本,可将 value 参数设置为不同字符串。
下面的代码用两个常数定义了前两个参数。在 Form 对象的 Load 事件中,该代码调用了名为“Login”的过程,返回用户的密码。然后使用返回值恢复先前保存的工具栏。名为“cmdSaveToolbar”的命令按钮用同样的三个参数值保存当前状态。
'
声明:SaveToolbar
方法常数。Const SaveKey = 1
Const SaveSubKey = "MyToolbar"
Dim mSaveVal As String '
用来区分用户的
'
模块变量。Private Sub Form_Load()
'
运行可标识用户的登录过程'
用用户的密码来确定用户的工具栏。mSaveVal = LogIn()
'
用常数恢复Toolbar1
的状态。Toolbar1.RestoreToolbar SaveKey, SaveSubKey, _
mSaveVal
End Sub
Public Function LogIn()
'
向用户询问密码。LogIn = InputBox("Password")
End Function
Private Sub cmdSaveToolbar_Click()
'
用相同的常数保存工具栏。Toolbar1.SaveToolbar SaveKey, SaveSubKey, mSaveVal
End Sub