控件数组动态事件求教,该怎么处理
控件数组动态事件求教
各位高手,小白有个问题求教
我做的一个程序,已经在窗体中设置了一个按钮可以动态生成文本框数组,然后我想要点击另一个按钮可以在另一个窗体中同步生成对应按钮数组,让按钮名称对应为用户输入text文本框的内容,请问这个要怎么实现呢?同时这个时候我该如何写这个动态按钮数组的事件呢?我搜了一下,有人说要使用像下面这样的,但是我照这个做却没反应,而且我如何能知道我该设置多少个case?因为我的按钮数量并不是固定的呀?
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1
Case 2
case 3
End Select
附上我的代码
Private Sub Command1_Click()
Static x As Long
Static y As Long
i = Text1.Count
Load Text1(i)
Text1(i).ZOrder
Text1(i).Top = x + 1440
Text1(i).Visible = True
o = Text2.Count
Load Text2(o)
Text2(o).ZOrder
Text2(o).Top = x + 1440
Text2(o).Visible = True
p = Form3.Command1.Count
Load Form3.Command1(p)
Form3.Command1(p).Visible = True
Form3.Command1(p).Top = x + 1440
Form3.Command1(p).Caption = Form1.Text1(i).Text
x = x + 720
If Form1.WindowState <> 2 Then Form1.Height = y + 4500
y = y + 500
End Sub


------解决思路----------------------
像这种动态添加的按钮, 能干的事也基本是定死的. 唯一的区别只不过是相对应的数据的不同而已.
所以, 根本连select case都用不着.
Private Sub Command1_Click(Index As Integer)
下面还是一样写, 无非是对应的控件数组或变量数组的索引值按照这里的index作一个相对的换算而已.
------解决思路----------------------
啥叫没反应?如果你只写了下面的东西,那能有反应才怪呢:
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1
Case 2
case 3
End Select
end sub
你得在相应的case后面添加相关的代码才能有反应。比如:
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1:msgbox command(index).caption
Case 2:msgbox "把你的手拿开!"
case 3:msgbox "command3报到...."
End Select
end sub
至于多少个case,那只有你才知道,如果你都不知道,那就没有人知道了.....
------解决思路----------------------
case else。。。。
------解决思路----------------------
在 Form3 中动态加载的按钮是 Command1 ,而楼主的“预置代码”过程是:
Private Sub Command_Click(Index As Integer)
这里的“对象名称”跟控件不一致的,这个过程不能被动态按钮直接触发!
如果 Form3 中没有叫“Command”的命令按钮(或别的有Click事件的对象),
这个过程只是一个普通的过程而已,根本就不是“事件过程”。
另外楼主要注意的就是,象1F、2F说的那样,也许Select结构根本就没有意义,
真要Select的话,也只有你自己才知道要写多少句,并且你得全部写好。
多出来的那几个动态按钮,(如果你的程序逻辑不合理)可能是什么事也做不了。
各位高手,小白有个问题求教
我做的一个程序,已经在窗体中设置了一个按钮可以动态生成文本框数组,然后我想要点击另一个按钮可以在另一个窗体中同步生成对应按钮数组,让按钮名称对应为用户输入text文本框的内容,请问这个要怎么实现呢?同时这个时候我该如何写这个动态按钮数组的事件呢?我搜了一下,有人说要使用像下面这样的,但是我照这个做却没反应,而且我如何能知道我该设置多少个case?因为我的按钮数量并不是固定的呀?
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1
Case 2
case 3
End Select
附上我的代码
Private Sub Command1_Click()
Static x As Long
Static y As Long
i = Text1.Count
Load Text1(i)
Text1(i).ZOrder
Text1(i).Top = x + 1440
Text1(i).Visible = True
o = Text2.Count
Load Text2(o)
Text2(o).ZOrder
Text2(o).Top = x + 1440
Text2(o).Visible = True
p = Form3.Command1.Count
Load Form3.Command1(p)
Form3.Command1(p).Visible = True
Form3.Command1(p).Top = x + 1440
Form3.Command1(p).Caption = Form1.Text1(i).Text
x = x + 720
If Form1.WindowState <> 2 Then Form1.Height = y + 4500
y = y + 500
End Sub
------解决思路----------------------
像这种动态添加的按钮, 能干的事也基本是定死的. 唯一的区别只不过是相对应的数据的不同而已.
所以, 根本连select case都用不着.
Private Sub Command1_Click(Index As Integer)
下面还是一样写, 无非是对应的控件数组或变量数组的索引值按照这里的index作一个相对的换算而已.
------解决思路----------------------
啥叫没反应?如果你只写了下面的东西,那能有反应才怪呢:
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1
Case 2
case 3
End Select
end sub
你得在相应的case后面添加相关的代码才能有反应。比如:
Private Sub Command_Click(Index As Integer)
Select Case Index
Case 1:msgbox command(index).caption
Case 2:msgbox "把你的手拿开!"
case 3:msgbox "command3报到...."
End Select
end sub
至于多少个case,那只有你才知道,如果你都不知道,那就没有人知道了.....
------解决思路----------------------
case else。。。。
------解决思路----------------------
在 Form3 中动态加载的按钮是 Command1 ,而楼主的“预置代码”过程是:
Private Sub Command_Click(Index As Integer)
这里的“对象名称”跟控件不一致的,这个过程不能被动态按钮直接触发!
如果 Form3 中没有叫“Command”的命令按钮(或别的有Click事件的对象),
这个过程只是一个普通的过程而已,根本就不是“事件过程”。
另外楼主要注意的就是,象1F、2F说的那样,也许Select结构根本就没有意义,
真要Select的话,也只有你自己才知道要写多少句,并且你得全部写好。
多出来的那几个动态按钮,(如果你的程序逻辑不合理)可能是什么事也做不了。