Модуль
Зміст
Покажчик 🔎︎

# Функція 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.