科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件使用插件功能扩展VB

使用插件功能扩展VB

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文通过实例介绍如何开发一个VB的插件来扩展VB的应用

作者:AppleVB.com 来源:论坛 2007年10月15日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
三、完善程序

  从上面的分析可以得知,程序框架实现了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

'添加mClick子程序到新模块中
astr = "Public Sub mClick()" + Chr(13) + Chr(10) + _
Chr(vbKeyTab) + "MsgBox ""You click a button!""" + Chr(13) + Chr(10) + _
"End Sub"
xCode.AddFromString astr

Dim lCount As Long

'在cmdButton的Click事件中添加执行mClick子程序
lCount = xComp.CodeModule.ProcBodyLine("cmdButton_Click", vbext_pk_Proc)
If lCount <> 0 Then
xComp.CodeModule.InsertLines lCount + 1, "mClick"
End If

  运行程序,再次打开另一个VB程序建立一个标准Exe工程。并装载 My AddIn插件,点击菜单的 My AddIn项,然后在弹出窗口中选择工程中的一个窗体,然后点击 Add Code 按钮,可以看到工程中新添加了一个ModuleTemp模块,并且你选择的窗体中添加了一个CommandButton按钮。通过前面的介绍以及上面代码的注释,相信大家对于插件如何通过VBE对象控制VB可能有一个比较基本的了解了。

  上面的程序只是基本的介绍了VB插件的实现。通过完善可以形成一个功能齐全的插件程序,例如你可以将所积累很多年的代码保存到一个文件中,然后通过一个插件让用户可以方便的选择添加他们所需要的部分到自己的程序中。

  上面就是文章的全内容,如果大家在编程方面有什么问题,欢迎到我的站点www.applevb.com上同我一起探讨。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章