суббота, 27 декабря 2008 г.

Обработка событий на уровне приложения.

При работе над совершенствованием и подгонкой под себя «ленточного» интерфейса я столкнулся с необходимостью реагировать на действия пользователя. В частности, при изменении выделенного блока текста.
Справка Word дает довольно скудные сведения об обработке событий. Вы можете в этом убедиться, запросив в «Справке» данные по теме Using Events with the Application Object.
Итак, что же нужно делать?
Во-первых, создать класс. Это делается в редакторе Visual Basic через меню Insert>Class Module. В этом классе нужно назначить ответственного за обработку событий. А затем для каждого необходимого события писать обработчик.
1 2 3 4 5 6 Public WithEvents App As Word.Application 'ответственный за события Private Sub App_WindowSelectionChange(ByVal Sel As Selection) 'Здесь пишем любой код, который должен выполняться. CustomRibbon.InvalidateControl "SetLineSpacing" 'обновление ленты при изменении выделенного диапазона. End Sub

Но это не все. Еще нужно указать в модуле, что для обработки событий мы используем свой собственный класс. Делается это так:
1 2 3 4 5 Dim MyEvents As New EventClassModule 'конструктор нашего класса Sub LoadRibbon(ribbon As IRibbonUI) Set MyEvents.App = Word.Application 'перенаправление событий приложения в объект нашего класса End Sub

Перенаправление событий можно делать в любом месте кода. Чаще всего это нужно делать при открытии документа, либо, как у меня, при загрузке ленты. В Справке Word об этом ничего не сказано. Пришлось доходить самому.
Более подробно об использовании этого события при работе с «ленточным» интерфейсом читаем здесь.

Комментариев нет:

Отправить комментарий