关于TIMER的使用
我有4个COMMAND按钮,每个COMMAND都有自己的代码,现在我要求从COMMAND1运行5秒后,COMMAND1停止,接着运行COMMAND2,5秒后又自动停止COMMAND2,又开始运行COMMAND3,5秒后又停止COMMAND3,最后运行COMMAND4,5秒后,也停止COMMAND4,最未来个MSGBOX就行了,如何写此代码? --------------------编程问答-------------------- PRIVATE SUB FORM_LOAD()LABEL1.CAPTION=0 '加个计数用的
LABEL1.VISABLE=FALSE '隐藏LABEL1
TIMER1.INTERVAL=1000 '加时间控件
END SUB
Private Sub Timer1_Timer()
LABEL1.CAPTION=LABEL1.CAPTION+1
IF LABEL1.CAPTION=5 THEN
COMMAND1_CLICK
IF LABEL1.CAPTION=10 THEN
'停止COMMAND1
'开始COMMAND2
IF LABEL1.CAPTION=15
'停止COMMAND2
'开始COMMAND3
END IF
END IF
END IF
End Sub
--------------------编程问答-------------------- 不理解啊,我一直只会运行Command1的代码,不会停止一个运行中的Command1,学习中,等高手 --------------------编程问答--------------------
Command1-4的运行时间一定少于5秒 --------------------编程问答-------------------- 你在command里写了什么代码? --------------------编程问答-------------------- 仅有定时器代码是不够的。
Dim Running_Index As Integer
Private Sub Timer1_Timer()
Running_Index = (Running_Index + 1)
Select Case Running_Index
Case 2
Command2_Click
Case 3
Command3_Click
Case 4
Command4_Click
Case Else
Timer1.Enabled = False
MsgBox "Stop"
End Select
End Sub
Private Sub Form_Load()
Running_Index = 1
Command1_Click
Timer1.Inteval = 5000
Timer1.Enabled = True
End Sub
Private Sub Command1_Click
...... '在循环中
If Running_Index > 1 Then Exit Sub
......
End Sub
Private Sub Command2_Click
...... '在循环中
If Running_Index <> 2 Then Exit Sub
......
End Sub
Private Sub Command3_Click
...... '在循环中
If Running_Index <> 3 Then Exit Sub
......
End Sub
Private Sub Command4_Click
...... '在循环中
If Running_Index <> 4 Then Exit Sub
......
End Sub --------------------编程问答--------------------
用4个命令按钮来执行,太哆嗦了!可以搞成自动的。
--------------------编程问答-------------------- 这个问题好象不用定时更方便吧?
call command1_click
start = Timer
Do While Timer < start + 5'不占用内存5秒死循环
DoEvents
Loop
call command2_click
start = Timer
Do While Timer < start + 5
DoEvents
Loop
call command3_click
start = Timer
Do While Timer < start + 5
DoEvents
Loop
call command4_click
--------------------编程问答-------------------- 对了你的仃止是什么意思啊?
是不是你的command1中的程序5秒运行不会结束的?
--------------------编程问答-------------------- 如果你自己有办法停止的,那就把代码放在call之前 --------------------编程问答-------------------- 说简单些,就一TEXTBOX里显示“AAAAA”5秒后,显示“BBBBB”,再加上5秒后显示“END”如果写? --------------------编程问答--------------------
--------------------编程问答-------------------- 同意啊,再加一个计数器
Private intCount As Integer
Private Sub Form_Load()
Timer1.Interval = 5000
Timer1.Enabled = False
End Sub
Private Sub Command1_Click()
Text1.Text = "AAAAA"
intCount = 0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Select Case intCount
Case 0
Text1.Text = "BBBBB"
Case 1
Text1.Text = "END"
Timer1.Enabled = False
End Select
intCount = intCount + 1
End Sub
intCount = 0
--------------------编程问答-------------------- 希望你能明白
Option Explicit--------------------编程问答-------------------- 看你的问题描述,单纯使用Timer是不行的,因为VB6是单线程运行的。
Dim intCount As Integer
Private Sub Command1_Click()
Text1.Text = "AAAA"
End Sub
Private Sub Command2_Click()
Text1.Text = "BBBB"
End Sub
Private Sub Command3_Click()
Text1.Text = "CCCC"
End Sub
Private Sub Command4_Click()
Text1.Text = "DDDD"
End Sub
Private Sub Form_Load()
intCount = 0
End Sub
Private Sub Timer1_Timer()
intCount = intCount + 1
Select Case intCount
Case 1
Call command1_click
Case 2
Call command2_click
Case 3
Call command3_click
Case 4
Call command4_click
Case 5
MsgBox "EEEE"
End Select
End Sub
你可以试试API来等到系统启动的时间值(毫秒)不断做减法来得到时间间隔。 --------------------编程问答-------------------- 顶一下,,,, --------------------编程问答--------------------
Timer 必须在代码编译成 .exe 之后,才能执行类似“中断”的功能。不要在调试状态下测试。
--------------------编程问答-------------------- 没看懂,还需要学习呀
补充:VB , 控件