使用ADD-IN 技术加强Visual Basic 开发环境
2008-02-23 06:49:23来源:互联网 阅读 ()
---- Add-In 技 术 的 实 质 就 是VB 编 程 环 境 本 身 做 为 一 个 对 象 模 型 向 用 户 公 开 出 来, 我 们 可 以 将 一 个 模 块、 一 段 代 码 做 为 一 个 操 作 对 象 来 修 改、 优 化。 下 面, 我 们 通 过 一 个 实 例 来 介 绍Add-In 技 术 的 使 用。
---- 例 如, 你 想 将 程 序 中 的 这 样 一 段 代 码:
dim nIndex as integer
nIndex=cStr(vsFlex.Text)
替换为:
dim sIndex as string
sIndex=Spread.text
---- 包 括Word 在 内 的 大 多 数 编 辑 软 件 都 不 包 括 多 行 查 找 替 换 功 能,VB5.0 的 编 辑 器 也 不 例 外, 怎 么 办 呢 ?
---- 1、 打 开VB, 在 选 择Project 类 型 时 选 择"Add In"。 这 样, 我 们 就 打 开 了 一 个 名 叫My Addin 的Project。 将Project 名 称 改 为 你 希 望 的 名 字, 如"Test"。
---- 2、 打 开Addin.bas , 你 发 现 有 一 个AddToIni 的 子 程 序:
Sub AddToINI()
Dim ErrCode As Long
ErrCode = WritePrivateProfileString("Add-Ins32", "Myaddin.Connect", "0", "vbaddin.ini")
End Sub
---- 在Windows 的 目 录 下, 有 一 文 件 叫vbaddin.ini , 每 次VB 启 动 时 将 根 据 该 文 件 的 设 置 确 定 有 那 些 可 用 的AddIn 程 序。AddToIni 的 功 能 实 际 就 是 将 当 前 的 程 序 注 册 到vbaddin.ini。 修 改"Myaddin.Connect" 为"Test.Connect", 使 之 与 当 前 的Project 名 称 对 应。
---- 3、 在Immediate 窗 口 执 行AddToIni , 完 成 对 当 前Addin 的 注 册。
---- 4、 打 开Connect.cls, 在 变 量 声 明 区 有: Implements IDTExtensibility
---- IDTExtensibility 是VB 和AddIn 程 序 交 互 的Interface。 当VB 在Addin 菜 单 选AddId Manager, 并 参 照 当 前 的Addin 程 序"Test" 时,OnConnect 事 件 就 会 触 发,IDTExtensibility_OnConnection() 程 序 将 被 执 行。 在 如 下 行 设 置 断 点:
---- Debug.Print VBInst.FullName
---- 运 行 当 前 程 序。
---- 5、 启 动 另 外 一 个VB 例 程, 生 成Standard EXE, 名 叫Project1。 从Addin 菜 单 选Addin Manager, 我 们 得 到 一 个 列 表, 我 们 选 择My Addin 并 返 回。 这 时,Test 被 启 动 并 停 在
---- Debug.Print VBInst.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 的Addin Manager 中, 将MyAddin 去 掉。
---- 8、 再 修 改Test, 打 开frmAddin, 将
Private Sub OKButton_Click()
MsgBox VBInstance.FullName
End Sub
改为:
Private Sub OKButton_Click()
Call mReplace()
End Sub
Private Sub mReplace()
Dim oPro As VBProject
Dim oCom As VBComponent
Dim bFind As Boolean
Dim nFindLine as integer
Dim nfindCol as integer
Screen.MousePointer = vbHourglass
On Error GoTo errmReplace
Set oPro = VBInstance.ActiveVBProject
'检查程序是否已保存
If oPro.FileName = "" Then MsgBox "请先保存!" ; Exit Sub
For Each oCom In oPro.VBComponents
bFind = True
Do While bFind
'查找要替换的代码段
bFind=oCom.CodeModule.Find("dim nIndex as integer", nFindLine, nfindCol, oCom.CodeModule.CountOfLines, 500, True
If bFind Then
If oCom.CodeModule.Lines(nFindLine 1, 1)= "nIndex=cStr(vsFlex.Text)"
' 找到后替换
oCom.CodeModule.ReplaceLine
nFindLine, "dim sIndex as string"
oCom.CodeModule.ReplaceLine
nFindLine 1, "sIndex=Spread.text"
Else
bFind=false
End If
End If
Loop
Next oCom
Screen.MousePointer = vbDefault
Exit Sub
errmReplace:
Beep
Screen.MousePointer = vbDefault
MsgBox "ERROR!"
End Sub
---- 9、 我 们 再 使Test 进 入 运 行 状 态。
---- 10、 我 们 再 重 复 第 五 步, 会 在Project1 的Addin 菜 单 中 多 一 项"My Addin"。 我 们 在Project1 中 加 入 一 些 要 替 换 的 代 码, 然 后 执 行My Addin, 替 换 工 作 就 会 完 成。
---- 11、 有 朋 友 不 希 望 在Addin 菜 单 出 现"My Addin" 字 样, 而 是 具 有 更 明 确 含 义 的 标 识, 如" 替 换"。 改 动Test 的Connect Class----IDTExtensibility_OnConnection(), 将
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:如何用VB设计动画时钟举例
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