VB怎么加载控件,会的进来看一下
发布网友
发布时间:2022-04-23 04:36
我来回答
共2个回答
热心网友
时间:2023-10-04 09:49
你好!
实现的代码及注解如下:
1、新建一个表单Form1;
2、在FORM1中放置一个按扭(Command),其名称如你所说为“按扭”(其实,一个好的习惯是对控件的名称为英文比较好);Index属性设定为0;
3、代码如下:
Dim oControl As Object '窗体级变量
Private Sub 按扭_Click(Index As Integer)
Dim I As Integer
Set oControl = Controls.Add("VB.label", "Label1")'产生一个标签Label1的控件
oControl.Left = 100
oControl.Top = 100
oControl.Caption = "Lanel1"
oControl.Visible = True '使控件可见
For I = 1 To 3'产生3个按扭
Load 按扭(I)
按扭(I).Caption = 按扭(0).Caption & Trim$(Str(I))
按扭(I).Left = 按扭(0).Left
按扭(I).Top = 按扭(0).Top + 按扭(0).Height * I
按扭(I).Visible = True
Next I
End Sub
祝你成功!
对问题的补充答:
上面是VB6.0的标准语法,不过该方法虽然现实了控件的动态加载,按钮显示在窗体上,可以象普通按钮一样按下去,但加载的控件不能预先设计响应事件代码,如:事件Sub MyButton_Click()将是非法的,当然,可以将要响应的事件封装在控件内部。就编程的观点来看该方法没什么大的用处,开发ActiveX控件的目的是为了资源共享,为了被其他开发人员利用,所以要提供必要的事件接口,显然利用该方法不行,通过分析VBControls等相关对象,找出VBControlExtender对象与EventInfo相结合能提供事件陷井捕捉,VBControlExtender对象对动态添加控件特别有用,它提供了一套通用的属性、方法、事件给开发人员,它的一个突出特点是能编程设计控件的事件,熟习类编程的朋友对带事件的对象声明一定不会陌生:
Dim WithEvents objElemt as CElemtVBControlExtender也不例外,声明的语法一样,只不过它有个特殊的事件ObjectEvent(Info As EventInfo),它能捕捉到对象使用RaiseEvent产生的所有事件,EventInfo数据结构映*事件的名称、参数个数和参数的值。VBControlExtender和 EventInfo相结合,采用Select Case 就可以预先将不同类对象的事件放置一起,各自独立运作。将上面的代码改写一下就能提供Click事件了:
Dim WithEvents oControl As VBControlExtender '带事件声明声明之后您就可以在代码窗口的左上角的对象下拉框中发现该对象出现了,也就是说,该对象有了事件或方法了,它的事件有DragDrop,DragOver ,LostFocus ,GotFocus ,ObjectEvent和Validate,其中ObjectEvent是通用的事件捕捉。
Private Sub LoadControl()
Set oControl = Controls.Add
("VB. CommandButton", "MyButton")
oControl.Visible = True
End Sub
Private Sub oControl_ObjectEvent(Info As EventInfo)
Select Case Info.Name
Case "Click" 'Click事件
'您可以添加处理Click事件代码
MsgBox "您按了MyButton!"
Case Else ' 其他事件
' Handle unknown events here.
End Select
End Sub
热心网友
时间:2023-10-04 09:50
做成一个控件数组。只要初始有一个下标为 0 的控件,隐藏起来。那后面再加载就简单得多了。只需要:
load 控件名(控件名.UBound+1)