使用ADD-IN技术加强VisualBasic开发环境
2018-06-17 17:12:08来源:未知 阅读 ()
----Add-In技术的实质就是VB编程环境本身做为一个对象模型向用户公开出来,我们可以将一个模块、一段代码做为一个操作对象来修改、优化。下面,我们通过一个实例来介绍Add-In技术的使用。
----例如,你想将程序中的这样一段代码:
dimnIndexasinteger
nIndex=cStr(vsFlex.Text)
替换为:
dimsIndexasstring
sIndex=Spread.text
----包括Word在内的大多数编辑软件都不包括多行查找替换功能,VB5.0的编辑器也不例外,怎么办呢?
----1、打开VB,在选择Project类型时选择"AddIn"。这样,我们就打开了一个名叫MyAddin的Project。将Project名称改为你希望的名字,如"Test"。
----2、打开Addin.bas,你发现有一个AddToIni的子程序:
SubAddToINI()
DimErrCodeAsLong
ErrCode=WritePrivateProfileString("Add-Ins32","Myaddin.Connect","0","vbaddin.ini")
EndSub
----在Windows的目录下,有一文件叫vbaddin.ini,每次VB启动时将根据该文件的设置确定有那些可用的AddIn程序。AddToIni的功能实际就是将当前的程序注册到vbaddin.ini。修改"Myaddin.Connect"为"Test.Connect",使之与当前的Project名称对应。
----3、在Immediate窗口执行AddToIni,完成对当前Addin的注册。
----4、打开Connect.cls,在变量声明区有:ImplementsIDTExtensibility
----IDTExtensibility是VB和AddIn程序交互的Interface。当VB在Addin菜单选AddIdManager,并参照当前的Addin程序"Test"时,OnConnect事件就会触发,IDTExtensibility_OnConnection()程序将被执行。在如下行设置断点:
----Debug.PrintVBInst.FullName
----运行当前程序。
----5、启动另外一个VB例程,生成StandardEXE,名叫Project1。从Addin菜单选AddinManager,我们得到一个列表,我们选择MyAddin并返回。这时,Test被启动并停在
----Debug.PrintVBInst.FullName
----注意,VBInstance(VBInst)就是指使用该Addin的VB的集成开发环境(VBEObject)。我们可以它做为一个对象来操作。VBEObject包含VBProjects,每个VBProject包含Vbcomponents,每个VBComponet对应一个模块,每个Form,Class,或Module。
----6、我们在Test的立即窗口执行:
----?VBInstance.ActiveProject.Name
----可以得到Project1的名称。
----?VBInstance.ActiveProject.VBComponent(0).Name
----可以得到Project1的第一个模块Form1的名称。
----到此为止,我们已经基本说明了AddIn的技术内涵。剩下的工作就很容易理解了。
----7、在Project1的AddinManager中,将MyAddin去掉。
----8、再修改Test,打开frmAddin,将
PrivateSubOKButton_Click()
MsgBoxVBInstance.FullName
EndSub
改为:
PrivateSubOKButton_Click()
CallmReplace()
EndSub
PrivateSubmReplace()
DimoProAsVBProject
DimoComAsVBComponent
DimbFindAsBoolean
DimnFindLineasinteger
DimnfindColasinteger
Screen.MousePointer=vbHourglass
OnErrorGoToerrmReplace
SetoPro=VBInstance.ActiveVBProject
'检查程序是否已保存
IfoPro.FileName=""ThenMsgBox"请先保存!";ExitSub
ForEachoComInoPro.VBComponents
bFind=True
DoWhilebFind
'查找要替换的代码段
bFind=oCom.CodeModule.Find("dimnIndexasinteger",nFindLine,nfindCol,oCom.CodeModule.CountOfLines,500,True
IfbFindThen
IfoCom.CodeModule.Lines(nFindLine 1,1)="nIndex=cStr(vsFlex.Text)"
'找到后替换
oCom.CodeModule.ReplaceLine
nFindLine,"dimsIndexasstring"
oCom.CodeModule.ReplaceLine
nFindLine 1,"sIndex=Spread.text"
Else
bFind=false
EndIf
EndIf
Loop
NextoCom
Screen.MousePointer=vbDefault
ExitSub
errmReplace:
Beep
Screen.MousePointer=vbDefault
MsgBox"ERROR!"
EndSub
----9、我们再使Test进入运行状态。
----10、我们再重复第五步,会在Project1的Addin菜单中多一项"MyAddin"。我们在Project1中加入一些要替换的代码,然后执行MyAddin,替换工作就会完成。
----11、有朋友不希望在Addin菜单出现"MyAddin"字样,而是具有更明确含义的标识,如"替换"。改动Test的ConnectClass----IDTExtensibility_OnConnection(),将
SetmcbMenuCommandBar=AddToAddInCommandBar("MyAddIn")
改为SetmcbMenuCommandBar=AddToAddInCommandBar("替换")
如果你想将AddinManager中的MyAddin改为
"Replace",可用notepad打开Connect.cls,将:AttributeVB_Description="MyAdd-In"
改为:AttributeVB_Description="Replace"
----以上介绍地只是AddIn技术的一个简单应用,了解其机理后,大家可根据需要做出自己的工具。对于一些专业的应用软件开发商来说,积累越多的AddIn工具,便可以大大提高编码效率。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:读取和修改Windows注册表
下一篇:VB“超频”秘籍之给字符串提速
- 快速开发多媒体Web 2018-06-17
- 在Windows98中使用VB5.0编程疑难一解 2018-06-17
- VB编程问与答 2018-06-17
- 怎样在VB中声明和使用API函数 2018-06-17
- 使用VB设计具有「动感」的命令图标栏 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash