当前位置: 网学 > 编程文档 > VB > 正文

使用插件功能扩展VB

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
工具栏按钮、打开工程、添加/删除工程中的文件等等。对应每一种事件,VB实例都包含有一个相应的事件对象。对象可以通过VB实例对象的Events属性获得或者设置。在插件程序中可以事先定义一个事件对象并编写好对象的事件响应代码,然后将该对象赋予VB实例对象中的相应事件对象。在上面的程序中,需要插件监控对添加的菜单项的点击事件,那么首先在程序中首先定义了一个With Events的对象MenuHandler。并在程序中编写对象的Click事件代码,然后在OnConnection方法中用


  Set Me.MenuHandler = VBInstance.Events.CommandBarEvents(mcbMenuCommandBar)


将MenuHandler设定为建立的菜单对象的事件对象,那么当在VB中点击 My Add-In项后,VB就会调用MenuHandle的Click事件代码。



三、完善程序


从上面的分析可以得知,程序框架实现了VB与插件间的接口和插件监控VB事件。接下来要实现插件对VB的控制


在VB调用插件对象的OnConnection方法时,会将自身作为一个VBE对象传递给插件供访问及操作。VBE对象是VB实例的根对象,其下包含以下5类基本的对象集合:


VBProjects集合:通过该集合可以访问VB实例中所包含的工程。


Windows集合:通过该集合可以访问所有的窗口,包括控件栏、属性栏以及工程中的窗体等。


CodePanes集合:通过该集合可以访问所有的代码窗口。可以获得代码窗口中的代码以及改变其中的代码。


CommandBars 集合:通过该集合可以访问VB实例中的所有命令栏,包括支持快速菜单的命令栏。


Events 集合:通过该集合插件可以访问VB中的所有事件对象。


下面的程序我们要实现的是:当点击 My-Addin菜单时,在当前工程中添加一个模块并在其中添加一个子程序,并让用户选择在工程中的窗体中选择一个窗体添加一个CommandButton控件,并向窗体的代码窗口写入代码使得点击CommmandButton控件就执行添加的子程序。


打开工程中的frmAddIn窗体,在其中添加一个CommandButton控件和一个ListBox控件。


在frmAddIn的Load事件中添加如下代码:


Dim mCop As Object


  


  ''获得当前启动工程中的所有对象


  For Each mCop In VBInstance.VBProjects.StartProject.VBComponents


    ''如果对象是窗体类型就将其添加到ListBox中


    If mCop.Type = vbext_ct_VBForm Then


      List1.AddItem mCop.Name


    End If


  Next


  


  If List1.ListCount <1 Then


    MsgBox "工程中没有添加控件的窗体"


    Connect.Hide


  Else


    List1.ListIndex = 0


  End If


  Command1.Caption = "Add Code"


在Command1的Click事件中添加如下代码:


Dim xComp As VBComponent


  Dim xModule As VBComponent


  Dim xForm As VBForm


  Dim xControl As VBControl


  Dim xCode As CodeModule


  


  ''获得用户选择的窗体对象


  Set xComp = VBInstance.VBProjects.StartProject.VBComponents(List1.List(List1.ListIndex))


  ''获得窗体设计器对象


  Set xForm = xComp.Designer


  


  ''添加一个CommandButton到窗体上


  Set xControl = xForm.VBControls.Add("VB.CommandButton")


  ''设定控件的名称


  xControl.Properties("Name") = "cmdButton"


  ''添加控件的Click事件代码


  xComp.CodeModule.CreateEventProc "Click", "cmdButton"


  


  ''添加一个新模块到工程中


  Set xModule = VBInstance.VBProjects.StartProject.VBComponents.Add(vbext_ct_StdModule)


  ''设定模块名称


  xModule.Properties("Name") = "ModulTemp"


  ''获得对象的代码对象


  Set xCode = xModule.CodeModule


  


  Dim astr As String


  


  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号