用外接程序操作工程

这组对象允许操作工程──即,添加工程到已有的工程组中或从其中删除工程。也可以把 VBComponents 添加到工程中或将其从工程中删除掉。VBComponent 是能添加到 Visual Basic 工程的任何对象,例如窗体、控件、代码模块等等。

下面的代码片断演示了如何引用 VBProject 对象和 VBProjects 集合,以及其它扩展性对象:

'创建新工程。
Private Sub cmdCreateNew_Click()
   Dim p As VBProject
   Set p = vbi.VBProjects.Add _
      (cmbProjKind.ItemData(cmbProjKind.ListIndex))
   If txtProjName.Text <> "" Then
      p.Name = txtProjName.Text
   End If
End Sub

'激活部件。
Private Sub cmdActivate_Click()
   Dim sc As String
   Dim sp As String
   Dim c As VBComponent

   sp = cmbProj.Text
   sc = cmbComp.Text
   If sp <> "" And sc <> "" Then
      Set c = _
         vbi.VBProjects.Item(sp).VBComponents.Item(sc)
      c.Activate
   End If
End Sub

' cmbCompKind combo 里指示的类型创建的新部件。
Private Sub cmdCreateNewVBComponent_Click()
   Dim p As VBProject
   Dim c As VBComponent
   Dim sp As String
   sp = cmbProj.Text
   If sp <> "" Then
      Set p = vbi.VBProjects.Item(sp)
      Set c = p.VBComponents.Add _
         (cmbCompKind.ItemData(cmbCompKind.ListIndex))
   End If
End Sub

'从代码模块中获取文本并显示在文本控件中。
Private Sub cmdGetText_Click()
   Dim i As Long
   Dim str As String
   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)
      txtDisplay.Text = ""  '清除文本控件。
      For i = 1 To c.CodeModule.CountOfLines
         str = str & c.CodeModule.Lines(i, 1) & CRLF
      Next i
      txtDisplay.Text = str
      SynchCodePaneScroll
   End If
   Screen.MousePointer = vbDefault
End Sub

'刷新由主对象中的事件调用的工程列表。
Public Sub RefreshProjects()
   Dim p As VBProject
   Dim tempIndex As Long

   Screen.MousePointer = vbHourglass
   If cmbProj.ListCount > 0 Then
      tempIndex = cmbProj.ListIndex 
      '用来恢复先前的选定的临时索引。
   End If
   cmbProj.Clear
   For Each p In vbi.VBProjects
      cmbProj.AddItem p.Name
   Next p
   '恢复先前的选定。
   If cmbProj.ListCount > 0 Then
      If tempIndex <= cmbProj.ListCount - 1 Then
      cmbProj.ListIndex = tempIndex
      Else
         cmbProj.ListIndex = 0
      End If
   End If
   Screen.MousePointer = vbDefault
End Sub