Функція CreateUnoListener
Створює примірник слухача.
У багатьох інтерфейсах Uno можна реєструвати слухачів за допомогою особливого інтерфейсу. Це дозволяє прослуховувати певні події і викликати потрібний метод прослуховування. Функція CreateUnoListener очікує викликаний інтерфейс слухача, а потім передає в цей інтерфейс підтримуваний ним об'єкт. Потім цей об'єкт передається методу для реєстрації слухача.
Синтаксис:
oListener = CreateUnoListener( Префікс, Назва_інтерфейсу_слухача )
Приклад:
У цьому прикладі використовується об'єкт із бібліотеки Basic.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Методу CreateUnoListener потрібні два параметри. Перший параметр - префікс, докладний опис якого дається нижче. Другий параметр - повне ім'я інтерфейсу слухача, який необхідно використовувати.
Слухача необхідно додати до об'єкта Broadcaster. Для цього необхідно викликати потрібний метод. В цих методах завжди використовується структура "addFooListener", де "Foo" - тип інтерфейсу слухача без "X". У наступному прикладі метод addContainerListener викликається для реєстрації XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Бібліотека Library1 повинна існувати!
oLib.addContainerListener( oListener ) ' Реєстрація слухача
Слухач зареєстрований. При виникненні події відповідний слухач викликає потрібний метод через інтерфейс com.sun.star.container.XContainerlistener.
Префікс викликає зареєстрованих слухачів з підпрограм Basic. Система підтримки виконання програм Basic виконує пошук підпрограм Basic або функцій з назвою "PrefixListenerMethode" і, знайшовши, викликає їх. В іншому випадку виникає помилка часу виконання.
У цьому прикладі інтерфейс слухача використовує такі методи:
-
disposing:
-
Основний інтерфейс слухача (com.sun.star.lang.XEventListener): основний інтерфейс для всіх інтерфейсів слухача
-
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
Для кожного типу слухача існує тип структури події, що містить дані про подію. При виклику методу слухача примірник події передається методу в якості параметра. Методи слухача на 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.