vb6中的timer.interval赋值问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 11:16:14
大家看我的代码(不是全部的,其他的在模块里,或其他窗体,出问题的部分在这里)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Const SW_MINIMIZE = 6
Const SW_SHOWNORMAL = 1
Const b = 0

Private Sub Form_Load()
id = 1
ci = 1
ci2 = 1
miao = 1
djint = 1

xzb(0).Top = 0
yzb(0).Top = 0
tim(0).Top = 0
djfs(0).Top = 0
End Sub

Private Sub addbut_Click()
djstr = djint
ci = ci + 1
shiqu.Visible = True
End Sub

Private Sub strat_Click()
id = 1
xzb(id).Caption = Val(xzb(id).Caption)
yzb(id).Caption = Val(yzb(id).Caption)
tim(id).Caption = CInt(tim(id).Caption)
djfs(id).Caption = CInt(djfs(id).Caption)
Timer1.Interval = tim(id).Caption

你在不同事件过程中调用的id、ci、ci2等变量,至少要定义成全局变量,才能实现你在4个数组控件中循环执行。不然,Timer3中id和ci2的自增是一次性的,Timer3每次开始,id、ci2、ci的值都是0,也是传递不到其他事件过程中去的。你在几行Const下定义全局变量:
dim id,ci,ci2

另外,timer3中的id和ci2等值,如果在自增,要保证它们不大于控件数组的下标上限,不然会出错的。可以在id=id+1之后(ci2也是同理),用If判断一下,If id>控件数组下标上限 then id=控件数组下标下限,即:
If id>tim.ubound then id=tim.lbound
还有,你的循环执行内容要体现在有效的Timer事件中,一定要处理好逻辑顺序。就这部分代码而言,看起来不是很清晰,因为控件太多了。