Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 2....doc
Скачиваний:
104
Добавлен:
17.12.2018
Размер:
1.62 Mб
Скачать

Использование класса ВашТаймер

Рассмотрим, как работать с классом ВашТаймер. Мы не стали изобретать ничего нового, - в тестовый документ добавили две кнопки Start1 и Finish1, которые работают также как и их тезки Start и Finish, но вызывают для этого методы и свойства объекта MyTimer класса ВашТаймер. В модуле, где объявлен соответствующий объект, находится и процедура обратного вызова TimerProc. Вот соответствующий текст этого модуля:

Option Explicit

'Модуль Таймер1

'Глобальная информация

Public Counter As Long 'Счетчик числа вызовов Callback функции

Public MyTimer As New ВашТаймер

Public Sub Start1()

MyTimer.ИнтервалТаймера = 5000

MyTimer.СоздатьТаймер

End Sub

Public Sub Finish1()

MyTimer.УдалитьТаймер

End Sub

Public Sub TimerProc(ByVal HandleW As Long, ByVal msg As Long, _

ByVal idEvent As Long, ByVal TimeSys As Long)

'Функция обратного вызова. Вызывается при обработке сообщения WM_Timer,

'посылаемого таймером, созданным процедурой SetTimer

Counter = Counter + 1

Debug.Print "Hi", Counter

End Sub

Пример 6.13. (html, txt)

Комментируя этот текст, следует заметить, что введение обертывающего класса облегчает работу с таймером. Единственной проблемой остается достаточно сложное и возможно непонятное конечному пользователю описание заголовка Callback функции TimerProc. Чтобы облегчить ее решение, можно, как это сделано в нашем примере, заготовку этой функции включить в описание класса в качестве комментария.

В заключение приведем результаты эксперимента с нажатием кнопок Start1 и Finish1:

Создан Таймер: Идентификатор =31711

Hi 1

Hi 2

Hi 3

Удален Таймер: Идентификатор =31711

Создан Таймер: Идентификатор =31704

Hi 4

Hi 5

Hi 6

Hi 7

Удален Таймер: Идентификатор =31704

На этом мы закончим рассмотрение темы работы с функциями Win32 API.

Программный код большинства примеров данной лекции можно найти в проектах, доступных для просмотра: DocOne7, DocTwo7.

Операторы

Большая часть материала этой и последующих лекций носит справочный характер. Для программистов, хорошо знакомых с VBA по предыдущим версиям, вполне достаточно беглого просмотра их содержания. Они будут обращаться к этим лекциям по мере необходимости. Конечно, для тех, кто впервые знакомится с этим языком, чтение этой и последующих лекций не только полезно, но и может предшествовать чтению предыдущих лекций, предполагающих хорошее знание основ языка VBA.

VBA - операторный язык. Это значит, что его программы (модули) представляют последовательности операторов. Набор операторов VBA весьма обширен и не уступает в этом "большим" языкам вроде Паскаля и С. Группу декларативных операторов VBA, служащих для описания объектов, с которыми работает программа (типов, переменных, констант, объектов приложений и др.), мы уже рассмотрели. Операторы другой группы обеспечивают присвоение и изменение значений этих объектов, операторы третьей группы управляют ходом вычислений, четвертой - работой с каталогами и файлами и т.д. Часть операторов досталась VBA в наследство от предыдущих версий Бейсика и без них вполне можно обойтись при написании новых программ.