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

关于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,学习中,等高手 --------------------编程问答--------------------
引用 2 楼 zhufobbs 的回复:
不理解啊,我一直只会运行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 --------------------编程问答--------------------
引用楼主 yfxpw 的回复:
我有4个COMMAND按钮,每个COMMAND都有自己的代码,现在我要求从COMMAND1运行5秒后,COMMAND1停止,接着运行COMMAND2,5秒后又自动停止COMMAND2,又开始运行COMMAND3,5秒后又停止COMMAND3,最后运行COMMAND4,5秒后,也停止COMMAND4,最未来个MSGBOX就行了,如何写此代码?

用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
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
--------------------编程问答-------------------- 看你的问题描述,单纯使用Timer是不行的,因为VB6是单线程运行的。
你可以试试API来等到系统启动的时间值(毫秒)不断做减法来得到时间间隔。 --------------------编程问答-------------------- 顶一下,,,, --------------------编程问答--------------------
Timer 必须在代码编译成 .exe 之后,才能执行类似“中断”的功能。不要在调试状态下测试。
--------------------编程问答-------------------- 没看懂,还需要学习呀
补充:VB ,  控件
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,