当前位置:编程学习 > VB >>

求一个VB6.0动态控件的事件的实例

我想在Form_Load事件中自动生存三个CommandButton按钮,然后任意点击一个按钮弹出一个msgbox对话框,像这样的功能要怎么写?我看了一些理论的实在没搞懂,最好哪位哥哥,姐姐帮我写个,不胜感激,谢谢!  --------------------编程问答-------------------- 把msgbox的enabled属性设置为true --------------------编程问答-------------------- 在VB6.0中只能用控件数组来实现 --------------------编程问答--------------------
'添加一个Command1,Index属性设置为0.
Option Explicit

Private Sub Command1_Click(Index As Integer)
    Select Case Index
        Case 0
            MsgBox "0000"
        Case 1
            MsgBox "1111"
        Case 2
            MsgBox "2222"
    End Select
End Sub

Private Sub Form_Load()
    Load Command1(1)
    Load Command1(2)
    
    Command1(1).Visible = True
    Command1(1).Move 0, 0
    Command1(1).Caption = "1111"
    
    Command1(2).Move Command1(1).Left + Command1(1).Width, 0
    Command1(2).Visible = True
    Command1(2).Caption = "2222"
End Sub
--------------------编程问答-------------------- 非常感谢!! --------------------编程问答--------------------
引用 2 楼 yeosn 的回复:
在VB6.0中只能用控件数组来实现

严重误导。
Private WithEvents cmd1 As CommandButton
Private WithEvents cmd2 As CommandButton
Private WithEvents cmd3 As CommandButton
Dim cmds(2) As CommandButton
Private Sub cmd1_Click()
MsgBox "you click cmd1"
End Sub
Private Sub cmd2_Click()
MsgBox "you click cmd2"
End Sub
Private Sub cmd3_Click()
MsgBox "you click cmd3"
End Sub

Private Sub Form_Load()
Set cmd1 = Controls.Add("VB.CommandButton", "cmd1")
Set cmd2 = Controls.Add("VB.CommandButton", "cmd2")
Set cmd3 = Controls.Add("VB.CommandButton", "cmd3")
For i = 1 To 3
Me.Controls("cmd" & i).Visible = True
Me.Controls("cmd" & i).Move 20, i * 600
Me.Controls("cmd" & i).Caption = "Command" & i
Next
End Sub
--------------------编程问答--------------------
引用 5 楼 Previouspage 的回复:
Quote: 引用 2 楼 yeosn 的回复:

在VB6.0中只能用控件数组来实现

严重误导。
Private WithEvents cmd1 As CommandButton



同意楼上,随便唠叨上一句,别忘了定义
  Dim i As Long
另外,其实看到这个定义
  Dim cmds(2) As CommandButton
时,就估计楼主是尝试过用这样的控件数组太WithEvents,结果被报错了。关于这方面的问题,我想稍后另开帖子来讨论一下。 --------------------编程问答--------------------
引用 6 楼 bcrun 的回复:
Quote: 引用 5 楼 Previouspage 的回复:

Quote: 引用 2 楼 yeosn 的回复:

在VB6.0中只能用控件数组来实现

严重误导。
Private WithEvents cmd1 As CommandButton



同意楼上,随便唠叨上一句,别忘了定义
  Dim i As Long
另外,其实看到这个定义
  Dim cmds(2) As CommandButton
时,就估计楼主是尝试过用这样的控件数组太WithEvents,结果被报错了。关于这方面的问题,我想稍后另开帖子来讨论一下。

是啊,很痛苦的问题 控件成了数组,就变成了Variant类型,而且这种动态控件的事件绑定也很讨厌. --------------------编程问答-------------------- 楼主过了1年多,还来挖自己的坟…………



6F 、7F 说的什么意思啊,我没看懂。
--------------------编程问答--------------------
引用 6 楼 bcrun 的回复:
Quote: 引用 5 楼 Previouspage 的回复:

Quote: 引用 2 楼 yeosn 的回复:

在VB6.0中只能用控件数组来实现

严重误导。
Private WithEvents cmd1 As CommandButton



同意楼上,随便唠叨上一句,别忘了定义
  Dim i As Long
另外,其实看到这个定义
  Dim cmds(2) As CommandButton
时,就估计楼主是尝试过用这样的控件数组太WithEvents,结果被报错了。关于这方面的问题,我想稍后另开帖子来讨论一下。


贴子开了吗?控件数组也可以支持事件,得绕一下。 --------------------编程问答--------------------
引用 9 楼 vansoft 的回复:
贴子开了吗?控件数组也可以支持事件,得绕一下。


怎么绕,不妨在这说一下 --------------------编程问答-------------------- 还“绕”个啥呀,设计时,直接弄个索引号为0的控件。
把代码写好就行了。
然后就可以动态加载新控件了,事件代码中按索引号识别是哪个对象。


就是 3F ,老马的那种方法。
--------------------编程问答-------------------- 在class中要使用数组控件的时候就比较麻烦,要么跟form偶合,要么一大堆代码类似的withevents声明和事件调用. --------------------编程问答-------------------- 哈哈,vansoft 还没上来啊,楼主也不知到哪去了。唉,要花时间新写代码回复的问题,还是需要多点分才有回复的动力啊。虽然得了这专家分没多少用,但分少了连版主考核通过都会成问题。嗯,以后还是要优先回复分多的问题才行。 --------------------编程问答-------------------- 在产品中已经使用了控件数组加事件的方法,而且运行相当稳定。
但你要我没事整个DEMO给出代码,那我还真没这个闲功夫。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,