Access 2002

Переменные «с событиями»


Внутри процедуры переменные «с событиями» объявлять нельзя. Мы включили в нашу демонстрационную базу данных модуль класса под названием cl sWord- Events, содержащий следующее объявление:

Private WithEvents mobjWordApp As Word.Application

Обратите  на то, что ключевое слово WithEvents стоит перед именем объектной переменной. Когда вы включаете подобное объявление в раздел объявлений модуля класса, VBA добавляет имя переменной в раскрывающийся список объектов вверху окна редактора. Собственно говоря, происходит то же, что при помещении элемента управления (встроенного или ActiveX) в форму Access. В ответ на выбор имени этой переменной в списке объектов в правом списке выводится перечень событий объекта, на который она ссылается. На  10.32 показан модуль clsWordEvents, открытый в окне редактора кода. В нем выбрана процедура обработки события DocumentChange. Наше приложение реагирует на это событие выводом имени активного документа в окне отладки.

Прежде чем использовать события автоматизируемого компонента, вы должны выполнить два действия, которые обычно производятся за вас при работе с элементами ActiveX: создать объект компонента и объект того класса VBA, в котором объявлена переменная объекта компонента.

На  10.33 показана схема перехвата событий внешнего приложения в VBA. Наша объектная переменная, gobjWordEvents, указывает на экземпляр класса VBA, clsWordEvents. Этот экземпляр, в свою очередь, содержит указатель (mobjWordApp) на экземпляр класса Application Microsoft Word. Когда этот класс генерирует событие, Word вызывает процедуры их обработки, объявленные в модуле clsWordEvents. Переменная gobjWordEvents нужна только для того, чтобы активизировать процесс перехвата событий.

Комментарии закрыты