程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> 在VB中動態添加可響應消息的控件

在VB中動態添加可響應消息的控件

編輯:VB6

在VB編程中,經常要根據不同的情況在運行時向窗口中添加或者刪除控件,而各個控件還要響應各種事件。在一般的情況下是首先在設計時將控件加入到窗口中,在它們的各個事件中寫入代碼,然後將它們的Visible屬性設置為False。在運行時再使控件顯示出來,但是這樣既不方便同時也因為在設計時在窗口中加入太多的控件而使得程序的運行速度變慢。下面我向大家介紹一種通過編程在運行時動態添加和刪除控件的方法

首先建立一個工程文件,然後在Form1中加入以下的代碼:

  Dim WithEvents cmdMyCommand As VB.CommandButton
   Option Explicit
   '在下面的定義中,程序定義了一個TextBox控件、一個CommandButton控件
   '和一個附加控件。
  Dim WithEvents ctlDynamic As VBControlExtender
   Dim WithEvents ctlText As VB.TextBox
   Dim WithEvents ctlCommand As VB.CommandButton
   Dim WithEvents ctlCommandDel As VB.CommandButton
   Private Sub ctlCommandDel_Click()
     Dim i As Integer
    
     '將控件的許可證信息刪除
     Licenses.Remove "MSComctlLib.TreeCtrl"
     If MsgBox("是否刪除所有控件", vbYesNo) = vbYes Then
     For i = 1 To Form1.Controls.Count
       Controls.Remove 0
     Next i
     End If
   End Sub
   Private Sub ctlCommand_Click()
     ctlText.Text = "你點擊的是控制按鈕"
   End Sub
   Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
     '當點擊樹形控件的某一個條目後,在ctlText中顯示條目。
     If Info.Name = "Click" Then
       ctlText.Text = "你點擊的條目是 " & _
           ctlDynamic.object.selecteditem.Text
     End If
   End Sub
   Private Sub Form_Load()
     Dim i As Integer
     ' 將樹形控件的許可證信息加入到許可證集合中
     ' 如果許可證已經存在,則會返回錯誤信息732
     Licenses.Add "MSComctlLib.TreeCtrl"
     ' 在Form中動態的加入一個樹形控件,如果你想樹形控件建立到不同的
     '容器中,象一個Frame控件或者PictureBox控件,你只要將Controls.Add
     '函數的第三個參數改為特定的容器名就可以了
     Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", _
             "myctl", Form1)
     '設置樹形控件的位置和尺寸
     ctlDynamic.Move 1, 1, 2500, 3500
     '在樹形控件中加入10個節點
     For i = 1 To 10
       ctlDynamic.object.nodes.Add Key:="Test" & Str(i), _
           Text:="Test" & Str(i)
       ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _
           Relationship:=4, Text:="TestChild" & Str(i)
     Next i
     '使樹形控件可見
     ctlDynamic.Visible = True
     '加入一個TextBox
     Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)
     '設置TextBox的位置和尺寸
     ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
             1, 2500, 100
     '將textBox的背景色設置為藍色並將前景色設置為白色
     ctlText.BackColor = vbBlue
     ctlText.ForeColor = vbWhite
     '使TextBox可見
     ctlText.Visible = True
     '加入一個CommandButton
     Set ctlCommand = Controls.Add("VB.CommandButton", _
             "ctlCommand1", Form1)
     '設置CommandButton的位置和尺寸
     ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
             ctlText.Height + 50, 1500, 500
     '設置CommandButton的標題
     ctlCommand.Caption = "點擊"
     '使CommandButton可見
     ctlCommand.Visible = True
    
     '建立一個刪除按鈕
     Set ctlCommandDel = Controls.Add("VB.CommandButton", _
             "ctlCommand2", Form1)
     ctlCommandDel.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
             ctlText.Height + 650, 1500, 500
     ctlCommandDel.Caption = "刪除所有控件"
     ctlCommandDel.Visible = True
   End Sub

運行上面的程序,可以看到程序在窗口中加入了三個VB標准控件:一個TextBox和兩個CommandButton還加入了一個擴展的ActiveX控件:樹形控件。這些控件還可以響應消息, 點擊樹形控件中的項目或者“點擊”按鈕就可以在文本框中顯示相應的內容。點擊“刪除 所有控件”按鈕就可以刪除加入的所有控件了。

通過上面的程序可以看到,通過WithEvents可以定義帶事件相應的控件,對於標准的VB控件(例如CommandButton、TextBox等)可以通過VB.XXX來定義,其中XXX是控件的類的名稱 ,而對於擴展的ActiveX控件,可以通過VBControlExtender來定義,在裝載擴展控件以前, 首先要使用Licenses對象加入控件的許可證信息。

上面的程序在VB6,WIN98中文版下運行通過。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved