VB6有一個(gè)新功能,可以動(dòng)態(tài)添加控件,不用控件數(shù)組:
object.Add (ProgID, name, container)
參數(shù)說明
Object 必需的。一個(gè)對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。
ProgID 必需的。一個(gè)標(biāo)識(shí)控件的字符串。大多數(shù)控件的 ProgID 都可通過查看對(duì)象瀏覽器來決定??丶?ProgID 是由控件的庫(kù)和類組成的。
例如,CommandButton 控件的 ProgID 是 VB.CommandButton。在ProgID 與對(duì)象瀏覽器中所顯示的不一樣的情況下,Visual Basic
將顯示一個(gè)包括正確 ProgId 的錯(cuò)誤信息。
name 必要的。一個(gè)字符串,用來標(biāo)識(shí)集合的成員。
container 可選的。一個(gè)對(duì)象引用,它指定控件的容器。如果沒有指定或?yàn)镹ULL,缺省值為 Controls 集合所屬的容器。通過指定該參數(shù),可以把一個(gè)控件放置在任何現(xiàn)存的容器控件(如 Frame 控件)中。用戶控件或 ActiveX 文檔也可以作為一個(gè)容器。
舉例: //在picture1上面添加一個(gè)commandbutton
Private Sub Form_Load()
Form1.Controls.Add "VB.CommandButton", "cmdOk", Picture1
With Form1!cmdOk
.Visible = True
.Width = 500
.Caption = "確認(rèn)(&Y)"
End With
End Sub
重點(diǎn):當(dāng)您添加一個(gè)未引用的需要許可證的控件到一個(gè)現(xiàn)存的(已部署好的)應(yīng)用程序時(shí),在使用 Add 方法之前您必須也添加這個(gè)控件的許可證關(guān)鍵字。
在運(yùn)行時(shí)添加未引用的控件:
您也可以利 Add 方法來動(dòng)態(tài)添加一個(gè)在工程中沒有被引用的控件。(“未引用的”控件是不出現(xiàn)在 Toolbox 中的控件)。為此,您必須也把控件的License 關(guān)鍵字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的許可證關(guān)鍵字:
Option Explicit
Private WithEvents extCtl As VBControlExtender
Private Sub Form_Load()
Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe"
Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1")
extCtl.Visible = True The control is invisible by default.
End Sub
但是,為了編程這樣一個(gè)未引用控件的事件,您必須使用 WithEvents 關(guān)鍵字聲明一個(gè)對(duì)象變量為VBControlExtender 對(duì)象(如上),并且設(shè)置該對(duì)象變量到Add 方法返回的引用上。然后,利用VBControlExtender 對(duì)象的 ObjectEvent事件來編程該控件的事件。下面是一個(gè)簡(jiǎn)單的例子。
object.Add (ProgID, name, container)
參數(shù)說明
Object 必需的。一個(gè)對(duì)象表達(dá)式,其值是“應(yīng)用于”列表中的一個(gè)對(duì)象。
ProgID 必需的。一個(gè)標(biāo)識(shí)控件的字符串。大多數(shù)控件的 ProgID 都可通過查看對(duì)象瀏覽器來決定??丶?ProgID 是由控件的庫(kù)和類組成的。
例如,CommandButton 控件的 ProgID 是 VB.CommandButton。在ProgID 與對(duì)象瀏覽器中所顯示的不一樣的情況下,Visual Basic
將顯示一個(gè)包括正確 ProgId 的錯(cuò)誤信息。
name 必要的。一個(gè)字符串,用來標(biāo)識(shí)集合的成員。
container 可選的。一個(gè)對(duì)象引用,它指定控件的容器。如果沒有指定或?yàn)镹ULL,缺省值為 Controls 集合所屬的容器。通過指定該參數(shù),可以把一個(gè)控件放置在任何現(xiàn)存的容器控件(如 Frame 控件)中。用戶控件或 ActiveX 文檔也可以作為一個(gè)容器。
舉例: //在picture1上面添加一個(gè)commandbutton
Private Sub Form_Load()
Form1.Controls.Add "VB.CommandButton", "cmdOk", Picture1
With Form1!cmdOk
.Visible = True
.Width = 500
.Caption = "確認(rèn)(&Y)"
End With
End Sub
重點(diǎn):當(dāng)您添加一個(gè)未引用的需要許可證的控件到一個(gè)現(xiàn)存的(已部署好的)應(yīng)用程序時(shí),在使用 Add 方法之前您必須也添加這個(gè)控件的許可證關(guān)鍵字。
在運(yùn)行時(shí)添加未引用的控件:
您也可以利 Add 方法來動(dòng)態(tài)添加一個(gè)在工程中沒有被引用的控件。(“未引用的”控件是不出現(xiàn)在 Toolbox 中的控件)。為此,您必須也把控件的License 關(guān)鍵字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的許可證關(guān)鍵字:
Option Explicit
Private WithEvents extCtl As VBControlExtender
Private Sub Form_Load()
Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe"
Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1")
extCtl.Visible = True The control is invisible by default.
End Sub
但是,為了編程這樣一個(gè)未引用控件的事件,您必須使用 WithEvents 關(guān)鍵字聲明一個(gè)對(duì)象變量為VBControlExtender 對(duì)象(如上),并且設(shè)置該對(duì)象變量到Add 方法返回的引用上。然后,利用VBControlExtender 對(duì)象的 ObjectEvent事件來編程該控件的事件。下面是一個(gè)簡(jiǎn)單的例子。