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


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


Если открыть раскрывающийся список объектов в окне программного кода модуля класса, то можно увидеть объект eTimer. Так как объектная переменная eTimer объявлена с использованием ключевого слова WithEvents,

то есть возмож­ность программировать его события. Вот почему его имя появилось в списке объектов. Выберите объект eTimer

в списке объектов и затем откройте список событий в окне Code. Появится имя события Timer. Выберите его, после чего можете программировать событие eTimer_Timer(), что эквивалентно програм­мированию события Timer1_Timer.

5. Добавьте строки программного кода 15.5 в обработчик события eTimer_Timer.

Программа 15.5. Инициирование событий из кода класса

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

Булева переменная Counting

объявлена в секции объявлений формы и служит признаком работы таймера. Если таймер остановлен, то не нужно обрабатывать событие Timer. Эта переменная устанавливается в True внутри метода StartCounting и устанавливается в False внутри метода StopCounting.

Эта подпрограмма вызывается каждые 10 секунд и увеличивает число прошедших секунд,

прибавляя к ним 10. Каждые 60 секунд она увеличивает число минут на 1, и каждые 60 минут она увеличивает число часов на 1. Если переменная minutes равна 0 (это значит, что она достигла значения 60 и сброшена в 0), должно быть инициировано событие Hour. Если это не так, то проверяется значение пере­менной seconds.

Если она равна 0, то должно быть инициировано событие Minute. В результате этого инициируются 59 последовательных событий Minute, затем событие Hour, после чего процесс повторяется. Так как нельзя выдать сразу два события, то событие Minute пропускается, когда инициируется событие Hour. Ясно, что событие Hour означает наличие и события Minute.




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



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