Не работает Timer

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
abs
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 05.12.2002 (Чт) 1:09

Не работает Timer

Сообщение abs » 29.08.2003 (Пт) 0:13

Я хочу проверить время работы цикла, включаю таймер в начале, и выключаю в конце, но результата не видно. Почему?
Код: Выделить всё
Dim t%
Private Sub Command1_Click()
Timer1.Enabled = True
.
.
.
.
.
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
  Label1.Caption =  t
  t = t + 1
End Sub

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 29.08.2003 (Пт) 11:20

Timer1.Interval - установлен :?:

abs
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 05.12.2002 (Чт) 1:09

Сообщение abs » 29.08.2003 (Пт) 11:39

Конечно установлен... Более того, если таймер сразу установить в Enabled = True, то он прекрасно работает, а в цикле не хочет включаться :?

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 29.08.2003 (Пт) 11:53

Я попробывал так, всё работает:
Код: Выделить всё
Option Explicit
Dim t%
Private Sub Command1_Click()
Dim i As Long
Timer1.Enabled = True
For i = 0 To 1000000
    DoEvents
Next i
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
  Label1.Caption = t
  t = t + 1
End Sub

Может дело в DoEvents :?:

abs
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 05.12.2002 (Чт) 1:09

Сообщение abs » 29.08.2003 (Пт) 12:22

Что-то странно....
Код: Выделить всё
Private Sub Command1_Click()
Label1.Caption ="Start"
.
.
.
.
.
Label1.Caption ="Finish"
End Sub


тоже не работает...

abs
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 05.12.2002 (Чт) 1:09

Сообщение abs » 29.08.2003 (Пт) 12:26

Спасибо! :lol:

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 29.08.2003 (Пт) 12:30

Попробуй установить свойство Enable=False, а при запуске процедуры устанавливай True

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 01.09.2003 (Пн) 15:10

Я точно не знаю но помойму это глюк!!
У меня такая же байда была!!!
Попробуй вместо:
Timer1.Enabled = True
вот это:
Timer1.Enabled = 1

Должно вроде заработать!!
У меня по крайне мере заработало!!!

boevik
Обычный пользователь
Обычный пользователь
 
Сообщения: 72
Зарегистрирован: 23.07.2002 (Вт) 11:44
Откуда: Israel

Сообщение boevik » 01.09.2003 (Пн) 15:27

Это не глюк.
Во время цикла не происходит обработка сообщений программы.
А таймер это именно сообщение для программы сделать то, что записано в Timer1_Timer.

Поэтому когда цикл запускается с командой DoEvents внутри цикла, происходит обработка кода в Timer1_Timer.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

    TopList