vb6中可以動態(tài)添加控件,不用控件數(shù)組:
object.add (progid, name, container)
參數(shù)說明:
object:必需。一個對象表達式,其值是“應(yīng)用于”列表中的一個對象。
progid:必需。一個標識控件的字符串。大多數(shù)控件的 progid 都可通過查看對象瀏覽器來決定。控件的 progid 是由控件的庫和類組成的。例如,commandbutton 控件的 progid 是 vb.commandbutton。在progid 與對象瀏覽器中所顯示的不一樣的情況下,visual basic 將顯示一個包括正確 progid 的錯誤信息。
name:必要。一個字符串,用來標識集合的成員。
container:可選。一個對象引用,它指定控件的容器。如果沒有指定或為null,缺省值為 controls 集合所屬的容器。通過指定該參數(shù),可以把一個控件放置在任何現(xiàn)存的容器控件(如 frame 控件)中。用戶控件或 activex 文檔也可以作為一個容器。
舉例:(在picture1上面添加一個commandbutton)
private sub form_load()
form1.controls.add "vb.commandbutton", "cmdok", picture1
with form1!cmdok
.visible = true
.width = 500
.caption = "確認(&y)"
end with
end sub
重點:當您添加一個未引用的需要許可證的控件到一個現(xiàn)存的(已部署好的)應(yīng)用程序時,在使用 add 方法之前您必須也添加這個控件的許可證關(guān)鍵字。
在運行時添加未引用的控件
您也可以利用 add 方法來動態(tài)添加一個在工程中沒有被引用的控件。(“未引用的”控件是不出現(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
但是,為了編程這樣一個未引用控件的事件,您必須使用 withevents 關(guān)鍵字聲明一個對象變量為vbcontrolextender 對象(如上),并且設(shè)置該對象變量到add 方法返回的引用上。然后,利用vbcontrolextender 對象的 objectevent事件來編程該控件的事件。下面是一個簡單的例子:
option explicit
dim withevents objext as vbcontrolextender ’聲明 extender 變量
private sub loadcontrol()
licenses.add "project1.control1", "xydsfasfjewfe"
set objext = controls.add("project1.control1", "myctl")
objext.visible = true
end sub
private sub extobj_objectevent(info as eventinfo)
’使用 select case 編程控件的事件。
select case info.name
case "click"
’這里處理 click 事件。
’現(xiàn)在顯示其他的 case
case else ’未知事件
’這里處理未知事件。
end select
end sub
object.add (progid, name, container)
參數(shù)說明:
object:必需。一個對象表達式,其值是“應(yīng)用于”列表中的一個對象。
progid:必需。一個標識控件的字符串。大多數(shù)控件的 progid 都可通過查看對象瀏覽器來決定。控件的 progid 是由控件的庫和類組成的。例如,commandbutton 控件的 progid 是 vb.commandbutton。在progid 與對象瀏覽器中所顯示的不一樣的情況下,visual basic 將顯示一個包括正確 progid 的錯誤信息。
name:必要。一個字符串,用來標識集合的成員。
container:可選。一個對象引用,它指定控件的容器。如果沒有指定或為null,缺省值為 controls 集合所屬的容器。通過指定該參數(shù),可以把一個控件放置在任何現(xiàn)存的容器控件(如 frame 控件)中。用戶控件或 activex 文檔也可以作為一個容器。
舉例:(在picture1上面添加一個commandbutton)
private sub form_load()
form1.controls.add "vb.commandbutton", "cmdok", picture1
with form1!cmdok
.visible = true
.width = 500
.caption = "確認(&y)"
end with
end sub
重點:當您添加一個未引用的需要許可證的控件到一個現(xiàn)存的(已部署好的)應(yīng)用程序時,在使用 add 方法之前您必須也添加這個控件的許可證關(guān)鍵字。
在運行時添加未引用的控件
您也可以利用 add 方法來動態(tài)添加一個在工程中沒有被引用的控件。(“未引用的”控件是不出現(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
但是,為了編程這樣一個未引用控件的事件,您必須使用 withevents 關(guān)鍵字聲明一個對象變量為vbcontrolextender 對象(如上),并且設(shè)置該對象變量到add 方法返回的引用上。然后,利用vbcontrolextender 對象的 objectevent事件來編程該控件的事件。下面是一個簡單的例子:
option explicit
dim withevents objext as vbcontrolextender ’聲明 extender 變量
private sub loadcontrol()
licenses.add "project1.control1", "xydsfasfjewfe"
set objext = controls.add("project1.control1", "myctl")
objext.visible = true
end sub
private sub extobj_objectevent(info as eventinfo)
’使用 select case 編程控件的事件。
select case info.name
case "click"
’這里處理 click 事件。
’現(xiàn)在顯示其他的 case
case else ’未知事件
’這里處理未知事件。
end select
end sub