用ActiveBar控件轻松制菜单
为了让更多的朋友能尽快了解和掌握该控件,我在这儿大致介绍一下它在Visual Basic中的应用。^501501a^
首先,安装ActiveBar软件包。安装完毕后,就可以从“部件”对话框中添加ActiveBar控件来使用它了。在ActiveBar中的元件,例如按钮、菜单项等都被称为Tool对象,而放置按钮、菜单项的工具条、菜单条则被称为Band集合。生成工具条和菜单的过程,也就是生成相应的Tool和Band的过程,其方法共有两种:设计时生成和运行时生成。
#1 一、设计时生成菜单
在窗体上的ActiveBar控件图标上单击鼠标右键,选择Design...菜单,进入ActiveBar Designer。ActiveBar Designer是用于交互设计Tool和Band的一个实用工具,它功能强大,能轻易地创建出符合你需要的Tool和Band。它也包含在ActiveBar软件包中。
在Designer中,左边的Tools窗口用于生成相应的Tools对象和新建、管理类别。类别也是一种集合,它可以让你将所创建的Tool对象进行分门别类的管理。例如,我们通常将“打开”、“保存”、“退出”等放在“文件”类别中,而将“查找”、“替换”放在“编辑”类中。因此,我们要创建Tool对象,首先就应该规划一下,分出类别来。
在左边的Tools窗口中按图标可以进入“Manage Categories”对话框。在“New Categories:”框中键入类别的名字,比如“文件”,然后单击“Add”按钮将“文件”类添加到列表中,并在Tool窗口的下拉框中选中该类别。
点击“New Tool”图标 ,可以在选定的类别中新建一个Tool。其属性在“Tool Properties”属性编辑对话框中(见^501501b^)进行设置。
每一个Tool的属性很多,你可以详尽地设置样式(有普通按钮、下拉式按钮、下拉框、文本框和静态按钮),风格(标准、文本、图形、文本和图形),标示位置,快捷键,开始新的一组等等。要注意,Width和Height是以像素为单位的。
值得一提的是属性编辑框中的Image页面,一个图标编辑器。你不光可以自己画,还可以按图标从屏幕上截取图像。当然,你也可以通过剪贴板粘贴或者从菜单“Image/Load Picture”中调用现成的。
一切满意后,按“Apply”按钮就行了。
如果你以后想对该Tool的属性进行修改,可以直接双击该Tool或者右键单击它并选取“Properties”菜单重新进入属性编辑对话框。
有了Tool就必须要有Band来放置。Band有三种类型,分别是Band(工具条)、MnuBand(主菜单条)和PopupBand(弹出式菜单条)。在左下的Bands窗口中按Create Toolbar图标 ,生成一个Band(当然你也可以生成MnuBand或PopupBand)。右键单击该Band,选择“Edit Properties”菜单进入Band的属性编辑对话框。在该对话框中你可以设置诸如大小、风格、可否移动、允许放置的位置等属性。然后双击该Band将其展开,并将所需要的Tool拖拽到Band上即可。你还可以在工具条上添加选项卡(Page),只需要在展开的Band上单击鼠标右键并选择“And Page”菜单即可。
生成菜单要稍微麻烦一些。在ActiveBar中,所有展开的菜单都是PopupBand。因此,在创建好所有的PopupBand后,还必须将MnuBand上的所有Tool中的SubBand属性设置为相对应的PopupBand名。下拉式按钮的设置也是同理。
用这种方法生成的菜单和工具条信息均保存在*.frx文件中。另外,还可以单独运行Designer(不是在VB中调用)来设计,这样信息就不会保存在*.frx文件中了。你可以通过“Save Layout...”菜单将设计保存为脚本文件,在程序中直接调用。调用脚本文件的格式如下:
ActiveBar.Load “脚本文件名”,“Band名”
如果不指定Band名则会把脚本中的所有Band都载入。如果只载入脚本中的某几个Band,则需一个一个地依次载入。例子:ActiveBar1.Load App.Path & “Menu.tb” ,“”。
使用这种方法的好处是,当用户通过“自定义”(运行时在工具条上按右键)菜单改变了菜单和工具条后,能使程序通过保存脚本的方式来保存当前的工具条和菜单信息。下次进入程序时再载入,使应用程序始终保持用户自定义的界面。保存脚本的格式为:
ActiveBar.Save “脚本文件名”,“Band名”
例子:ActiveBar1.Save App.Path & “UserInfo.dat”,“FileBand”。如果没有指定Band名,则保存所有的Band。
#1 二、运行时生成菜单
在运行时生成菜单和工具条也很简单,看看下面这个例子吧!
Option Explicit
Private Const DDTSStandard=0
Private Sub Form_Load()
Dim Tool As New Tool
With ActiveBar1
′添加所有Tool到Tools集合中
′添加“新建”Tool...
Set Tool=.Tools.Add(101,“btnNew”)′101是ID,btnNew是名字
Tool.Caption=“新建(&N)”
Tool.ToolTipText=“新建”
′Index值:0.正常,1.按下时显示图标,2.鼠标在按钮上时显示图标,3.不显示图标
Tool.SetPicture _
Index:=0,_
Picture:=LoadPicture(App.Path & “\New.bmp”),_
color:=&HC0C0C0 ′将灰色设置为透明色
Tool.BeginGroup=False
Tool.Style=DDTSStandard ′0,标准的按钮
Tool.Description=“建立一个新的空文档”
Tool.SubBand=“弹出式菜单”
′添加“打开”Tool...
Set Tool=.Tools.Add(102,“btnOpen”)
Tool.Caption=“打开(&O)”
Tool.ToolTipText=“打开”
Tool.SetPicture _
Index:=0,_
Picture:=LoadPicture(App.Path & “\Open.bmp”),_
color:=QBColor(8)
Tool.BeginGroup=False
Tool.Style=0
Tool.Description=“打开一个已经存在的文挡”
Tool.ShortcutKey=15 ′设置快捷键为Ctrl-O
′添加“拷贝”Tool...
Set Tool=.Tools.Add(103,“btnCopy”)
Tool.Caption=“拷贝(&S)”
Tool.ToolTipText=“拷贝”
Tool.SetPicture _
Index:=0,_
Picture:=LoadPicture(App.Path & “\Copy.bmp”),_
color:=QBColor(8)
Tool.BeginGroup=True
Tool.Style=0
Tool.Description=“拷贝指定内容到剪贴板”
Tool.ShortcutKey=3′设置快捷键为Ctrl-C
′将工具添加到相应的类别中
.Tools(“btnNew”).Category=“文件”
.Tools(“btnOpen”).Category=“文件”
.Tools(“btnCopy”).Category=“编辑”
′添加Band
.Bands.Add “标准”
.Bands(“标准”).Wrappable=True ′能否执行,True为能,False为不能(缺省)
.Bands(“标准”).Type=DDBTNormal
.Bands.Add “菜单”
.Bands(“菜单”).Wrappable=True
.Bands(“菜单”).Type=DDBTMenuBar
.Bands.Add “弹出式菜单”
.Bands(“弹出式菜单”).Wrappable=True
.Bands(“弹出式菜单”).Type=DDBTPopup
End With
′将工具添加到指定的Band上
With ActiveBar1.Bands(“标准”).Tools
.Insert 0,ActiveBar1.Tools(“btnNew”)
.Insert 1,ActiveBar1.Tools(“btnOpen”)
.Insert -1,ActiveBar1.Tools(“btnCopy”)′-1表示插入到最后一个位置
End With
With ActiveBar1.Bands(“菜单”).Tools
.Insert 0,ActiveBar1.Tools(“btnNew”)
.Insert 1,ActiveBar1.Tools(“btnOpen”)
.Insert -1,ActiveBar1.Tools(“btnCopy”)
End With
With ActiveBar1.Bands(“弹出式菜单”).Tools
.Insert 0,ActiveBar1.Tools(“btnNew”)
.Insert 1,ActiveBar1.Tools(“btnOpen”)
.Insert -1,ActiveBar1.Tools(“btnCopy”)
End With
′刷新
ActiveBar1.RecalcLayout
End Sub
怎样生成Tool和Band就介绍到这儿,大家可以查看它的帮助或者用户手册,里面对所有的属性、方法和事件都有详尽的说明。希望它能为你的程序增光添彩。