动态添加控件
2008-04-09 04:40:06来源:互联网 阅读 ()
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)
使用 Select Case
编程控件的事件。
Select Case Info.Name
Case "Click"
这里处理 Click 事件。
现在显示其他的
case
Case Else 未知事件
这里处理未知事件。
End Select
End Sub
Note:
不能把一个固有的控件指定给这个 VBControlExtender 变量; 任何这种试图将引起类型不匹配错误。
但是,您也可以通过使用
WithEvents 关键字声明一个对象变量,并且设置该方法返回的引用为该变量,从而编程一个动态添加控件的事件,如下所示。
Option
Explicit
声明对象变量为 CommandButton 。
Private WithEvents cmdObject As
CommandButton
Private Sub Form_Load()
Set cmdObject =
Form1.Controls.Add("VB.CommandButton", "cmdOne")
cmdObject.Visible =
True
cmdObject.Caption = "Dynamic CommandButton"
End Sub
Private
Sub cmdObject_Click()
Print "This is a dynamically added control"
End
Sub
如果希望添加一个用户控件或任何 ActiveX 控件到您的窗体,必须或者把这个控件添加到“工具箱”,或者把控件的 License 关键字添加到
Licenses集合中。有关详细信息请参阅“增加方法 (Licenses 集合)”。
注意:如果您添加一个 ActiveX
或用户控件到您的工程,但是没有在窗体中使用它,您也必须不要选定“工程属性”对话框的“生成” 选项卡上的“删除有关未使用的 ActiveX
控件”选项。如果您的应用程序试图添加该控件,那么该 Add 方法将失败,因为必需的信息已经被丢弃。
删除控件
Form1.Controls.Remove "ctl1" 该控件的名称为 ctl1。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:vb获得一页的html代码
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash