Dim rst As New ADODB.Recordset
Dim i, j As Integer
i = 0
Set rst = DE1.Data.Execute("select * from GongziKemu")
If rst.RecordCount > 0 Then
ReDim Text(rst.RecordCount)
ReDim Lab(rst.RecordCount)
ReDim Pic(rst.RecordCount)
rst.MoveFirst
While rst.EOF = False
Set Lab(Trim(rst(0))) = Controls.add("VB.label", "" & Trim(rst(1)) & Trim(rst(0)) & "", Me)
With Lab(Trim(rst(0)))‘Trim(rst(0)))从数据库读取出来是1,2,3...的整数
.Top = 240 + i
.Left = 1900
.Width = 800
.Height = 375
.Visible = True
.Alignment = vbCenter
.Caption = "" & Trim(rst(1)) & ""
End With
Set Text(Trim(rst(0))) = Controls.add("VB.textbox", "Text" & Trim(rst(0)) & "", Me)
With Text(Trim(rst(0)))
.Top = 240 + i
.Left = Lab(Trim(rst(0))).Left + Lab(Trim(rst(0))).Width
.Width = 2475
.Height = 285
.Visible = True
.Alignment = vbCenter
.Text = "Text" & Trim(rst(0)) & ""
End With
i = i + 400
rst.MoveNext
Wend
End If上面是根据数据库里的字段动态的生成n个text和label,定义的是数组类型。 代码可以正常运行生成n个控件,但是之后定义不了它们的事件。生成控件的名称应该是set后的名字吧,所以每个控件的名字为Text(1),Text(2),....。然后定义它们的事件应该这样写吧:Dim WithEvents Text(1) As VB.TextBox。但是vb不支持这个带括号的命名。用不带括号的命名也试过,可以正常的定义事件。但是这里是动态的生成几个控件,不能事先命名,必须用数组来定义。不知道各位有什么其它的好方法吗。
Dim i, j As Integer
i = 0
Set rst = DE1.Data.Execute("select * from GongziKemu")
If rst.RecordCount > 0 Then
ReDim Text(rst.RecordCount)
ReDim Lab(rst.RecordCount)
ReDim Pic(rst.RecordCount)
rst.MoveFirst
While rst.EOF = False
Set Lab(Trim(rst(0))) = Controls.add("VB.label", "" & Trim(rst(1)) & Trim(rst(0)) & "", Me)
With Lab(Trim(rst(0)))‘Trim(rst(0)))从数据库读取出来是1,2,3...的整数
.Top = 240 + i
.Left = 1900
.Width = 800
.Height = 375
.Visible = True
.Alignment = vbCenter
.Caption = "" & Trim(rst(1)) & ""
End With
Set Text(Trim(rst(0))) = Controls.add("VB.textbox", "Text" & Trim(rst(0)) & "", Me)
With Text(Trim(rst(0)))
.Top = 240 + i
.Left = Lab(Trim(rst(0))).Left + Lab(Trim(rst(0))).Width
.Width = 2475
.Height = 285
.Visible = True
.Alignment = vbCenter
.Text = "Text" & Trim(rst(0)) & ""
End With
i = i + 400
rst.MoveNext
Wend
End If上面是根据数据库里的字段动态的生成n个text和label,定义的是数组类型。 代码可以正常运行生成n个控件,但是之后定义不了它们的事件。生成控件的名称应该是set后的名字吧,所以每个控件的名字为Text(1),Text(2),....。然后定义它们的事件应该这样写吧:Dim WithEvents Text(1) As VB.TextBox。但是vb不支持这个带括号的命名。用不带括号的命名也试过,可以正常的定义事件。但是这里是动态的生成几个控件,不能事先命名,必须用数组来定义。不知道各位有什么其它的好方法吗。
load 控件名(索引)
的方法,来来代替程序中的controls.add语句,这样,就可以处理事件了
MsgBox Ev_CommandButton.Name
End SubPrivate Sub Form_Load()
Timer1.Interval = 100
End SubPrivate Sub Timer1_Timer()
Set Ev_CommandButton = Me.ActiveControl
End Sub
http://www.mvps.org/emorcillo/download/vb6/grl_event2.zip