热情软件屋

 

如何在程序中动态加入控件数组


编号: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

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio