关于COM加载项的菜单问题

seagh 2004-09-27 10:19:50
做一个COM加载项,在动态添加菜单时遇到了问题。要求是动态生成一定数量的菜单项(如:当前文档中有5个图片,相应的Word菜单“Pic”上有5个菜单项Pic1、Pic2、......Pic5等)

对于添加单个菜单项Dim WithEvent picItem As CommandBarButton,再加上picItem_Click响应就可以了,尝试过定义数组picItem()但WithEvent就不支持了,事件响应过程就不知怎么写了。

不知有没有碰到过类似问题,请大家给点主意。
...全文
197 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
seagh 2004-10-11
  • 打赏
  • 举报
回复
我试过那个方法,但事件处理函数不响应;不知你现在还有那个KB的链接吗?
techgopher 2004-10-10
  • 打赏
  • 举报
回复
虽然如此,原理应该是通用的,我认为可行。记得后来看到有篇microsoft的KB讲的就是这个办法。
seagh 2004-10-08
  • 打赏
  • 举报
回复
谢谢hhjjhjhj的提示

那个蛮有技巧的,但可能环境不同,作为Office的Com Add-in,CommandBarButton有其特殊性,跟通用的Button控件不一样。
hhjjhjhj 2004-09-28
  • 打赏
  • 举报
回复
关于控件数组响应事件参见
http://community.csdn.net/Expert/topic/3353/3353756.xml?temp=.6354792
seagh 2004-09-28
  • 打赏
  • 举报
回复
C#中也支持的:button.Click += clickHandler (Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler)

看来vb6里是实现不了了:(
techgopher 2004-09-28
  • 打赏
  • 举报
回复
无法给array指定withevents。详见这里的解释:http://blogs.msdn.com/robgruen/archive/2004/08/23/218933.aspx

你应该可以不用WithEvents而用CommandBarControl对象的onAction属性来指定event handler. 例如:
Sub testtb()
For i = 1 To 5
Dim ctl As CommandBarControl
Set ctl = CommandBars("View").Controls.Add
ctl.Caption = "pic" & i
ctl.Tag = i
ctl.OnAction = "pic_click"
ctl.Parameter
Next
End Sub

Sub pic_click()
select case CommandBars.ActionControl.Tag
case "1":
...
case "2":
...
end select
End Sub
techgopher 2004-09-28
  • 打赏
  • 举报
回复
在vb.net里你可以动态创建event handler:
addhandler myCommandBarButton.click, addressof pic_click

由于CommandBarButton的onclick事件的signature里包含来源commandbarbutton,你可以做与vba差不多的事情:

Private Sub pic_Click(ByVal Ctrl As Microsoft.Office.Core.CommandBarButton, ByRef CancelDefault As Boolean)
select case ctrl.Tag
case "1":
...
end select
End Sub

但是我不知道VB6里怎么动态指定event handler.
seagh 2004-09-28
  • 打赏
  • 举报
回复
谢谢关于WithEvent的解答;

OnAction我也试过,比如你建议的,但把pic_click写在COM Addin项目中没响应,写在模板里作为宏是可以的(但自己不想这样);关于OnAction的用法我也查过,另外种写法是:"!<PicAddin.pic_click>"(其中pic_click写在addin项目中),但也是不能起作用

不知你是否还有其他想法,谢谢。

5,172

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧