如何在程序中动态加入控件数组
编号:QA001178
建立日期: 1999年6月14日 最后修改日期:1999年7月25日
所属类别:
junzhou:
我在使用vb6提供的方法遇到加入控件数组的问题,我发现无法进行如下定义:
dim WithEvents mybutton(1 to 10) as commandbutton
定义单个的控件则可以。不用WithEvents当然可以,但是就无法使用相应的事件了。如何解决呢?除了show/hide?
回答:
无法采用你说的办法定义动态控件数组。一种办法可以参考QA000098 "如何在VB程序运行时加入和删除控件",另一种办法是可以借助VBControlExtender来实现这种效果。下面是一个例子:
Option Explicit
' 如果你要添加一个在你的工程文件中
' 没有用到的ActiveX控件,你需要声明它为
' VBControlExtender.
Dim WithEvents ctlDynamic As VBControlExtender
Dim WithEvents ctlText As VB.TextBox
Dim WithEvents ctlCommand As VB.CommandButton
Private Sub ctlCommand_Click()
ctlText.Text = "你点击了命令按钮"
End Sub
Private Sub ctlDynamic_ObjectEvent(Info As EventInfo)
' 测试TreeView控件的Click事件
If Info.Name = "Click" Then
ctlText.Text = "你点击了 " _
& ctlDynamic.object.selecteditem.Text
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
' 添加TreeView的许可信息license集合
' 如果license集合已经包括了许可信息,
' 你将得到运行错误732
Licenses.Add "MSComctlLib.TreeCtrl"
' 动态增加TreeView控件到窗体。
' 如果你希望增加控件到其它的容器,
' 如Frame或PictureBox,你可以使用
' Controls.Add的第3个参数指定容器程序。
Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl", _
"myctl", Form1)
' 设置控制的位置和大小
ctlDynamic.Move 1, 1, 2500, 3500
' 添加一些节点到TreeView控件
For i = 1 To 10
ctlDynamic.object.nodes.Add Key:="Test" & Str(i), Text:="Test" _
& Str(i)
ctlDynamic.object.nodes.Add Relative:="Test" & Str(i), _
Relationship:=4, Text:="TestChild" & Str(i)
Next i
' 显示控件
ctlDynamic.Visible = True
' 添加textbox
Set ctlText = Controls.Add("VB.TextBox", "ctlText1", Form1)
' 设置textbox的位置和大小
ctlText.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
1, 2500, 100
' 改变背景色
ctlText.BackColor = vbYellow
' 显示控件
ctlText.Visible = True
' 添加按钮
Set ctlCommand = Controls.Add("VB.CommandButton", _
"ctlCommand1", Form1)
' 设置CommandButton的位置和大小
ctlCommand.Move (ctlDynamic.Left + ctlDynamic.Width + 50), _
ctlText.Height + 50, 1500, 500
' 设置标题
ctlCommand.Caption = "Click Me"
' 显示控件
ctlCommand.Visible = True
End Sub
此问题由李海回答。
| |
|
|
| |
|
|