IBM Lotus Symphony
|
Создает экземпляр Listener.
Многие интерфейсы Uno позволяют регистрировать обработчики событий в специальном интерфейсе. Это дает возможность отслеживать конкретные события и вызывать соответствующий метод обработчика событий. Функция CreateUnoListener ожидает вызванный интерфейс обработчика событий и затем передает ему поддерживаемый им объект. Впоследствии этот объект передается методу для регистрации обработчика событий.
oListener = CreateUnoListener( Префикс, Интерфейс_Listener )
Следующий пример основан на использовании библиотечного объекта Basic.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
У метода CreateUnoListener два параметра. Первый - это префикс, подробно описанный ниже. Второй - это полное имя интерфейса Listener, который вы хотите применять.
Затем Listener должен быть добавлен в объект Broadcaster. Для добавления Listener вызывается соответствующий метод. Эти методы всегда задаются по шаблону "addFooListener", где "Foo" - тип интерфейса Listener, без 'X'. В данном примере для регистрации XContainerListener вызывается метод addContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Библиотека Library1 должна уже существовать!
oLib.addContainerListener( oListener ) ' Регистрация обработчика событий
Теперь Listener зарегистрирован. Когда произойдет событие, соответствующий Listener вызовет соответствующий метод из интерфейса com.sun.star.container.XContainerListener.
Префикс вызовет зарегистрированные обработчики Listener из процедур Basic. Система выполнения Basic выполнит поиск процедур и функций Basic с именем "PrefixListenerMethode" и вызовет найденные процедуры и функции. В противном случае произойдет ошибка времени выполнения.
В данном примере интерфейс Listener применяет следующие методы:
disposing:
базовый интерфейс Listener (com.sun.star.lang.XEventListener): базовый интерфейс всех интерфейсов Listener
elementInserted:
метод интерфейса com.sun.star.container.XContainerListener
elementRemoved:
метод интерфейса com.sun.star.container.XContainerListener
elementReplaced:
метод интерфейса com.sun.star.container.XContainerListener
В данном примере префикс - это ContListener_. Таким образом, в Basic должны быть реализованы следующие процедуры:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Для каждого типа Listener существует структура событий, содержащая информацию о событии. При вызове метода Listener ему передается экземпляр этого события как параметр. Методы Listener в Basic могут также вызывать эти объекты событий, если соответствующий параметр передается в объявлении Sub. Пример:
Sub ContListener_disposing( oEvent )
MsgBox "disposing"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementInserted( oEvent )
MsgBox "elementInserted"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementRemoved( oEvent )
MsgBox "elementRemoved"
MsgBox oEvent.Dbg_Properties
End Sub
Sub ContListener_elementReplaced( oEvent )
MsgBox "elementReplaced"
MsgBox oEvent.Dbg_Properties
End Sub
Указывать параметр объекта события не нужно, если объект не используется:
' Минимальная реализация Sub disposing
Sub ContListener_disposing
End Sub
![]() |
Во избежание ошибок времени выполнения Basic, методы Listener всегда должны быть реализованы. |