Visual Basic 扩展模型提供通过 CodeModule 对象在 Visual Basic 工程中查看和操作代码的能力。利用 CodeModule 对象,可以通过编程在工程中添加或者删除代码、在代码中进行搜索或者修改。可以浏览代码,确定总共有多少行,或者查看某个特定过程的开始行和结束行等等。也可以添加、删除或者替换代码行。
重点 应该了解 CodeModule 对象和 CodePane 对象的区别。CodePane 对象只允许查看代码而不能修改代码。CodeModule 对象允许修改代码但是不能查看。这两个对象一起工作时既可查看又可修改代码。
Members 对象允许查看并且修改给定的模块中的过程的代码和属性。每个过程属性的变化取决于所查看的模块和过程的类型。为了了解过程的属性,请在 Tools 菜单中选择“过程属性”项。
设计者本身并不是对象。它实际上是创建可视界面的基础。可以把扩展模型中视为空的插槽,在它上面可插入几个不同的设计者。例如,如果正在使用 Visual Basic 窗体,则不论创建或是编辑窗体,都可使用 Visual Basic 窗体设计者。在创建或者编辑 UserDocument 时,可用 UserDocument 设计者。当创建或者编辑 UserControl 时,可用 UserControl 设计者。尽管从编程角度来讲设计者各不相同,但是对于用户来说,也可能看不到它们之间的区别。
下面的代码段阐述了如何引用 CodeModule 对象:
'
清除代码模块中的所有文本。Private Sub cmdClearText_Click()
Dim p As VBProject
Dim c As VBComponent
Dim sc As String
Dim sp As String
Screen.MousePointer = vbHourglass
sp = cmbProj.Text
sc = cmbComp.Text
If sp <> "" And sc <> "" Then
Set c = _
vbi.VBProjects.Item(sp).VBComponents.Item(sc)
c.CodeModule.DeleteLines 1, _
c.CodeModule.CountOfLines
SynchCodePaneScroll
End If
Screen.MousePointer = vbDefault
End Sub
'
在代码模块中插入文本。Private Sub cmdInsertText_Click()
Dim p As VBProject
Dim c As VBComponent
Dim sc As String
Dim sp As String
Screen.MousePointer = vbHourglass
sp = cmbProj.Text
sc = cmbComp.Text
If sp <> "" And sc <> "" And txtDisplay.Text _
<> "" Then
Set c = _
vbi.VBProjects.Item(sp).VBComponents.Item(sc)
c.CodeModule.AddFromString txtDisplay.Text
SynchCodePaneScroll
End If
Screen.MousePointer = vbDefault
End Sub
'
将滚动条控件的位置与当前CodePane
的位置保持同步。Private Sub SynchCodePaneScroll()
vbi.VBProjects.Item(sp).VBComponents.Item(sc)
Dim cp As CodePane
Set cp = GetCodePane
sclCodePane.Max = cp.CodeModule.CountOfLines
sclCodePane.Value = cp.TopLine - 1
End Sub