不知道大家有没有用过一个第三方的菜单生成工具ActiveBar.我主工程和active dll里边的菜单都是由它来生成。老师要求:主工程仅仅是一个公用界面,十一个子系统对应于11个active dll在主界面里面进行各个子系统的切换,并进行相应的界面变换。关键是,界面变换都是针对于主工程里面的公用界面进行。但是:''''''''''''''''''''''''''这是subProject2.clsChangeMenu,想直接加载它的界面菜单在主form上Public Sub ChangeMenu(abMenu As ActiveBar2LibraryCtl.ActiveBar2)
abMenu.Load "", "C:\Program Files\Data Dynamics\ActiveBar 2\Samples\VB6\Toolbars\toolbars.tb2", ddSOFile
End Sub'''''''''''''''''''''''''''这是主工程,公用form'''''''''''''
'''''''''''''''''''''''''''abMenu就是一个activebar对象,toolclick事件表示点击了相应按钮
Option Explicit
Dim clsTemp As New subProject2.clsChangeMenuPrivate Sub abMenu_ToolClick(ByVal Tool As ActiveBar2LibraryCtl.Tool)
'''''在这儿本来是想clsTemp.ChangeMenu(abMenu) 但是clsTemp.的话根本就没有changemenu出来
为什么啊?不能把控件作为参数来传递吗?
End Sub
不能用传参的方式来实现dll对主工程form控件的操作吗?
我主工程和dll里面都声明了activebar,怎样才能通过dll来对主工程里面的activebar进行操作呢???
abMenu.Load "", "C:\Program Files\Data Dynamics\ActiveBar 2\Samples\VB6\Toolbars\toolbars.tb2", ddSOFile
End Sub'''''''''''''''''''''''''''这是主工程,公用form'''''''''''''
'''''''''''''''''''''''''''abMenu就是一个activebar对象,toolclick事件表示点击了相应按钮
Option Explicit
Dim clsTemp As New subProject2.clsChangeMenuPrivate Sub abMenu_ToolClick(ByVal Tool As ActiveBar2LibraryCtl.Tool)
'''''在这儿本来是想clsTemp.ChangeMenu(abMenu) 但是clsTemp.的话根本就没有changemenu出来
为什么啊?不能把控件作为参数来传递吗?
End Sub
不能用传参的方式来实现dll对主工程form控件的操作吗?
我主工程和dll里面都声明了activebar,怎样才能通过dll来对主工程里面的activebar进行操作呢???
比较烂不知道当时怎么想的。哈哈。。
一个类,主要用来设置一个POPMENU,类名为POPMENUSETUP
Dim AB As ActiveBar2
Dim MenuForms As Form
Dim oTool As ActiveBar2LibraryCtl.Tool
Dim oBand As ActiveBar2LibraryCtl.band
Dim x As Long'创造弹出式菜单
Public Sub 主菜单(ByVal MenuForm As Form, ByVal MenuName As String, ByVal MenuBmpPathName As String) 'Remove all existing tools an bands
'Add band
'左侧的总菜单
'参数一:弹出式菜单名字、和标题
Set oBand = MenuForm.AB.Bands.Add(MenuName)
With oBand
.Caption = "Context Menu"
.Type = ddBTPopup
.Picture = LoadPicture(MenuBmpPathName)
.PopupBannerBackgroundColor = RGB(102, 151, 111)
End With
'菜单分隔条
'Add tools
'Separator
Set oTool = MenuForm.AB.Tools.Add(0, "Separator")
With oTool
.Caption = ""
.Category = "Format"
.ControlType = ddTTSeparator
End With
Set MenuForms = MenuForm
End SubPublic Sub 子菜单(ByVal MenuName As String, ByVal MenuCaption As String, ByVal MenuBmpPathName As String)'第一菜单项
'Bold
Set oTool = MenuForms.AB.Tools.Add(1, MenuName)
With oTool
'设置菜单标题
.Caption = MenuCaption
.Category = "Format"
.ControlType = ddTTButton
'设置菜单图标
.SetPicture ddITNormal, LoadPicture(MenuBmpPathName)
End With
oBand.Tools.Insert -1, oTool'刷新
MenuForms.AB.RecalcLayout
End Sub恩,不得不说明一下,当时在窗体里面画好了一个ActiveBar2,然后命名为AB测试代码的时候不要忘记这样做。当时怎么想的来。。应该写成过程比较对。。以下在窗体Dim PopMenu As New PopMenuSeup
Private Sub Form_Load()
AB.AlignToForm = True
AB.AutoSizeChildren = ddASProportional
AB.AutoUpdateStatusBar = False
'装载弹出式菜单主菜单
PopMenu.主菜单 Me, "tbContext", App.Path & "\Images\context.bmp"
'装载弹出式菜单子菜单
PopMenu.子菜单 "tbOpen", "打开", App.Path & "\images\open.bmp"
PopMenu.子菜单 "tbOpen1", "打开", App.Path & "\images\DELETE.bmp"
PopMenu.子菜单 "tbOpen2", "打开", App.Path & "\images\open.bmp"
End Sub
Private Sub AB_MouseUp(Button As Integer, shift As Integer, x As Single, y As Single)
'按下右键就弹出菜单
If Button = vbRightButton Then
AB.Bands("tbContext").PopupMenu 3
End If
End Sub将就看吧。哎。