vb6中如何動態(tài)添加控件

字號:

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