国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

使用ADD-IN技術(shù)加強VisualBasic開發(fā)環(huán)境

2019-11-18 17:52:20
字體:
供稿:網(wǎng)友
----VisualBasic5.0是一個功能強大的集成開發(fā)環(huán)境,它可以自動檢查語法錯誤,提示編碼員語法格式。這些功能都大大提高了編碼效率。可是它作為快捷開發(fā)工具,它的特點還突出體現(xiàn)在那就是Add-In技術(shù)上。利用它,我們可以強化和定制VB開發(fā)環(huán)境:可以自動在所有PRoject中自動加入一個模塊;可以將每個模塊中的某個模塊替換成另一個模塊;可以在程序中查找某段代碼,并將它替換掉;理論上講,我們甚至可以利用該技術(shù)做一個代碼自動生成器。

----Add-In技術(shù)的實質(zhì)就是VB編程環(huán)境本身做為一個對象模型向用戶公開出來,我們可以將一個模塊、一段代碼做為一個操作對象來修改、優(yōu)化。下面,我們通過一個實例來介紹Add-In技術(shù)的使用。

----例如,你想將程序中的這樣一段代碼:

dimnIndexasinteger
nIndex=cStr(vsFlex.Text)
替換為:
dimsIndexasstring
sIndex=Spread.text

----包括Word在內(nèi)的大多數(shù)編輯軟件都不包括多行查找替換功能,VB5.0的編輯器也不例外,怎么辦呢?

----1、打開VB,在選擇Project類型時選擇"AddIn"。這樣,我們就打開了一個名叫MyAddin的Project。將Project名稱改為你希望的名字,如"Test"。

----2、打開Addin.bas,你發(fā)現(xiàn)有一個AddToIni的子程序:

SubAddToINI()
DimErrCodeAsLong
ErrCode=WritePrivateProfileString("Add-Ins32","Myaddin.Connect","0","vbaddin.ini")
EndSub

----在Windows的目錄下,有一文件叫vbaddin.ini,每次VB啟動時將根據(jù)該文件的設(shè)置確定有那些可用的AddIn程序。AddToIni的功能實際就是將當前的程序注冊到vbaddin.ini。修改"Myaddin.Connect"為"Test.Connect",使之與當前的Project名稱對應(yīng)。

----3、在Immediate窗口執(zhí)行AddToIni,完成對當前Addin的注冊。

----4、打開Connect.cls,在變量聲明區(qū)有:ImplementsIDTExtensibility

----IDTExtensibility是VB和AddIn程序交互的Interface。當VB在Addin菜單選AddIdManager,并參照當前的Addin程序"Test"時,OnConnect事件就會觸發(fā),IDTExtensibility_OnConnection()程序?qū)⒈粓?zhí)行。在如下行設(shè)置斷點:

----Debug.PrintVBInst.FullName

----運行當前程序。

----5、啟動另外一個VB例程,生成StandardEXE,名叫Project1。從Addin菜單選AddinManager,我們得到一個列表,我們選擇MyAddin并返回。這時,Test被啟動并停在

----Debug.PrintVBInst.FullName

----注意,VBInstance(VBInst)就是指使用該Addin的VB的集成開發(fā)環(huán)境(VBEObject)。我們可以它做為一個對象來操作。VBEObject包含VBProjects,每個VBProject包含Vbcomponents,每個VBComponet對應(yīng)一個模塊,每個Form,Class,或Module。

----6、我們在Test的立即窗口執(zhí)行:

----?VBInstance.ActiveProject.Name

----可以得到Project1的名稱。

----?VBInstance.ActiveProject.VBComponent(0).Name

----可以得到Project1的第一個模塊Form1的名稱。

----到此為止,我們已經(jīng)基本說明了AddIn的技術(shù)內(nèi)涵。剩下的工作就很容易理解了。

----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進入運行狀態(tài)。

----10、我們再重復第五步,會在Project1的Addin菜單中多一項"MyAddin"。我們在Project1中加入一些要替換的代碼,然后執(zhí)行MyAddin,替換工作就會完成。

----11、有朋友不希望在Addin菜單出現(xiàn)"MyAddin"字樣,而是具有更明確含義的標識,如"替換"。改動Test的ConnectClass----IDTExtensibility_OnConnection(),將

SetmcbMenuCommandBar=AddToAddInCommandBar("MyAddIn")
改為SetmcbMenuCommandBar=AddToAddInCommandBar("替換")
如果你想將AddinManager中的MyAddin改為
"Replace",可用notepad打開Connect.cls,將:AttributeVB_Descr
----以上介紹地只是AddIn技術(shù)的一個簡單應(yīng)用,了解其機理后,大家可根據(jù)需要做出自己的工具。對于一些專業(yè)的應(yīng)用軟件開發(fā)商來說,積累越多的AddIn工具,便可以大大提高編碼效率。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 紫阳县| 临泉县| 江油市| 蓝山县| 乐东| 霸州市| 英吉沙县| 紫阳县| 沙田区| 铅山县| 乐平市| 贵州省| 安丘市| 屏边| 内黄县| 兴海县| 临漳县| 颍上县| 阿拉善左旗| 霍城县| 巫山县| 锦屏县| 临朐县| 原平市| 克东县| 苍梧县| 安龙县| 新田县| 蓬安县| 敦化市| 永川市| 义乌市| 洛南县| 舟曲县| 银川市| 博客| 桦南县| 沧州市| 新巴尔虎右旗| 米脂县| 钟山县|