Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Выполнение кода через определенный промежуток времени (http://forum.oszone.net/showthread.php?t=237434)

Dark_Timur 28-06-2012 03:27 1941805

Выполнение кода через определенный промежуток времени
 
Я захотел организовать в VB6 изменение текста label'а через определенный промежуток времени. Сделал таймер по этому руководству. Из обьектов есть:

Timer1 - Таймер с интервалом в 100 . По умолчанию отключен.
Label2 - Отображает время таймера
Command1 - Кнопка. Что она делает написано в коде
Label3 - Должен отображать текст через определенные промежутки времени

Код:

Dim tTime As Double
Private Sub Timer1_Timer()
tTime = tTime + 0.1
Label2 = "Time = " & tTime
End Sub
Private Sub Command1_Click()
Timer1.Enabled = True
tTime = 0#
Label3.Caption = "Текст 1"
If tTime = 3# Then
Label3.Caption = "Текст 2"
End If
If tTime = 13# Then
Label3.Caption = "Текст 3"
End If
If tTime = 33# Then
Label3.Caption = "Текст 4"
End If
End Sub

При нажатии кнопки на "Label3" выводится "Текст 1", даже если время таймера равно 100. Пробовал объявлять tTime как Integer - таймер перестает работать (Label2 показывает "Time = 0" постоянно). При объявлении tTime как Variant ничего (по сравнению с Double) не меняется. Пробовал делать так, без решетки:

Код:

If tTime = 3 Then
Label3.Caption = "Текст 2"
End If

Тоже ничего не изменилось.

Извините, если я задаю глупые вопросы, так как я новичок в VB. Заранее спасибо за помощь.

Iska 28-06-2012 04:22 1941810

Цитата:

Цитата Dark_Timur
При нажатии кнопки на "Label3" выводится "Текст 1", даже если время таймера равно 100. »

Естественно. Вы ведь в процедуре безусловно обнуляете «tTime» и так же безусловно задаёте надпись в «Label3».

Цитата:

Цитата Dark_Timur
Command1 - Кнопка. Что она делает написано в коде »

Для чего она нужна — совершенно не понятно.

Код:

Option Explicit

Dim lngTick As Long
Dim arrCaptions() As Variant

Private Sub Form_Load()
    lngTick = 0
   
    With Me.Timer1
        .Interval = 1000
        .Enabled = True
    End With
   
    arrCaptions = Array("AAAA", "SSSS", "DDDD", "FFFF")
   
    Me.Label1.Caption = ""
End Sub

Private Sub Timer1_Timer()
    If lngTick > UBound(arrCaptions) Then
        lngTick = 0
    End If
   
    Me.Label1.Caption = arrCaptions(lngTick)
    lngTick = lngTick + 1
End Sub


Dark_Timur 03-07-2012 00:18 1944657

Приспособил этот код под себя. Несмотря на то, что я искал немного другое, этот код мне очень пригодился. Большое спасибо! Тему закрываю.


Время: 21:13.

Время: 21:13.
© OSzone.net 2001-