Visual Basic 6. Руководство разработчика


Инициирование событий из кода класса - часть 4


6. Для того чтобы надлежащим образом инициировать события, необходимо объя­вить их имена. Добавьте следующие строки в окно кода модуля класса (вне лю­бой процедуры):

Event Minute ()

Event Hour ()

Полный программный код EventTimerClass показан ниже. Обратите внимание на сходство и отличия с простым классом CTimer. Процедура Property Get и метод класса не изменились. Добавлен только код для доступа к элементу управления Timer на невидимой форме и запрограммировано событие Timer элемента Timer для инициирования соответствующих событий.

Программа 15.6. Листинг EventTimerClass

Dim cFrm As Formi

Dim WithEvents eTimer As Timer

Dim totallnterval As Double

Dim Tl As Double

Dim Counting As Boolean

 

Event Minute()

Event Hour()

 

Public Sub StartCounting ()

Tl = Time

Counting = True

End Sub

 

Public Sub StopCounting()

totallnterval = totallnterval + Time - Tl

Counting = False

End Sub

 

Property Get ElapsedTime() As Double

ElapsedTime = totallnterval

End Property

 

Public Sub ResetTimer()

totallnterval = 0

End Sub

 

Private Sub Class_Initialize ()

Set cFrm = New Formi

Load cFrm

Set eTimer = cFrm.Timer1

End Sub

 

Private Sub eTimer_Timer()

Static seconds As Long

Static minutes As Long

Static hours As Long

Dim RaiseMinutes As Boolean, RaiseHours As Boolean

 

If Not Counting Then Exit Sub

RaiseMinutes = False

RaiseHours = False

seconds = seconds + eTimer.Interval / 1000

If seconds = 60 Then

minutes = minutes + 1

seconds = 0

RaiseMinutes = True

If minutes = 60 Then

hours = hours + 1

minutes = 0

RaiseHours = True

End If

End If

If RaiseHours Then

RaiseEvent Hour

Elself RaiseMinutes Then

RaiseEvent Minute

End If

End Sub




Начало  Назад  Вперед



Книжный магазин