vb6中如何动态添加控件

文章作者 100test 发表时间 2007:09:15 12:15:12
来源 100Test.Com百考试题网


  vb6中可以动态添加控件,不用控件数组:
  object.add (progid, name, container)

参数说明:
 object:必需。一个对象表达式,其值是“应用于”列表中的一个对象。

 progid:必需。一个标识控件的字符串。大多数控件的 progid 都可通过查看对象浏览器来决定。控件的 progid 是由控件的库和类组成的。例如,commandbutton 控件的 progid 是 vb.commandbutton。在progid 与对象浏览器中所显示的不一样的情况下,visual basic 将显示一个包括正确 progid 的错误信息。

 name:必要。一个字符串,用来标识集合的成员。

 container:可选。一个对象引用,它指定控件的容器。如果没有指定或为null,缺省值为 controls 集合所属的容器。通过指定该参数,可以把一个控件放置在任何现存的容器控件(如 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

 重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用 add 方法之前您必须也添加这个控件的许可证关键字。

在运行时添加未引用的控件
 您也可以利用 add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 toolbox 中的控件)。为此,您必须也把控件的license 关键字添加到 licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:
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 关键字声明一个对象变量为vbcontrolextender 对象(如上),并且设置该对象变量到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)
’使用 0select case 编程控件的事件。
0select case info.name
case "click"
’这里处理 click 事件。
’现在显示其他的 case
case else ’未知事件
’这里处理未知事件。
end 0select
end sub


相关文章


《网络基础学习之十二》交换机的分类
《网络基础学习之十一》走近交换机
用VB编写入侵监听程序
用VisualBasic学做“黑客”程序
vb6中如何动态添加控件
用VB编写你自己的M 即时通讯软件
VB十七种可用一行代码完成的技巧
VB实现的M 信息群发软件
用VB制作IE工具条自定义按钮
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛