Основы офисного программирования и документы Word


События объекта Application


Многие из объектов Word обладают встроенным набором событий. Но среди них есть странная группа объектов, которые обладают событиями, но появляются по умолчанию как объекты без событий. Эти объекты существуют в двух ипостасях, как объекты без событий и объекты с событиями (With Events). Чтобы включить события для таких объектов, необходимо предпринять ряд мер, в частности создать класс объектов With Events и экземпляр этого класса связать с объектом без событий. Такая технология использется и при работе с объектами собственных классов. Эти объекты создаются по умолчанию без событий, но разработчик вправе определить для них собственный набор событий.

Из стандартных объектов Word наиболее известными объектами этой группы являются объекты Application. Когда открывается Word и создается объект Application, по умолчанию он не имеет событий, которые мог бы обрабатывать. Но можно связать с приложением другой объект (Application With Events), реагирующий на события. В Office 97 у этих объектов было всего два события Quit и DocumentChange, возникающие, при попытках пользователя закрыть приложение или переключится с одного документа на другой. В Office 2000 набор событий существенно расширился и теперь их более десяти. Для того чтобы создать обработчик событий объекта Application необходимо:

  • Создать класс, в который вложен объект Application WithEvents;
  • Создать в классе обработчики событий этого объекта, следуя обычной технологии.
  • Создать экземпляр этого класса и связать объект Application WithEvents с объектом Application.

Начнем решение этой задачи с создания нового класса объектов. Этот класс очень прост и содержит лишь одно свойство, задающее объект с событиями. Вот определение этого класса:

Option Explicit 'Класс EventsOfApp Public WithEvents AppEv As Word.Application

Листинг 1.67.

(html, txt)

Как только это свойство определено, в окне списка объектов этого модуля появляется объект AppEv, обладающий событиями, тут же можно выбрать соответствующее событие, создать заготовку и затем наполнить ее содержанием. Я написал несколько простых обработчиков следующих событий объекта AppEv в этом классе. Вот их тексты:



Содержание раздела