Теперь можно написать код, который обновляет изображение и вызывает событие TimeOut. Код, который будет написан в этом разделе, не имеет никакого отношения к конструированию элемента управления ActiveX. Этот код необходим при реализации таймера как самостоятельного приложения.
Совет
Если вы еще не совсем привыкли к среде конструирования ActiveX, то можно разработать обычное приложение, которое делает то же самое (то есть отсчитывает время, показывает прошедшее или оставшееся время на элементе управления Label, и обнаруживает, когда подходит время сигнала). Затем можно скопировать необходимые процедуры и вставить их в окне проекта ActiveX.
Теперь напишем код для происходящего каждую секунду события Timer элемента управления Timer. Для этого следует установить свойство Interval элемента управления Timer равным 1000. В обработчике события Timer элемента управления Timer следует обновить изображение и проверить, не нужно ли выключить сигнал.
Программа 16.16. Событие Timer элемента управления Alarm
Private Sub Timerl_Timer()
Dim TimeDiff As Date
Dim StopNow As Boolean
If Time - m_AlarmTime > 0 Then
If NextDay = False Then
StopNow = True
Else
TimeDiff = 24 - Time + m_AlarmTime
End If
Else
If NextDay = True Then
StopNow = True
Else
TimeDiff = m_AlarmTime - Time
End If
End If
If m_CountDown Then
Label1.Caption = Format$(Hour(TimeDiff) & ":" & _
Minute(TimeDiff) & ":" & Second(TimeDiff), "hh:mm:ss")
Else
Label1.Caption = Format(Hour(Time - startTime) & ":" & _
Minute(Time - startTime) & ":" & _
SecondfTime - startTime), "hh:mm:ss")
End If
If StopNow Then
Timeri.Enabled = False
RaiseEvent TimeOut
End If
End Sub
Способ остановки таймера и вызова события TimeOut зависит от того, настроен ли элемент управления для обратного отсчета. При обратном отсчете он отображает оставшееся время, а при прямом отсчете он отображает время, прошедшее с момента запуска таймера (переменная startTime