Module
Contents
Index 🔎︎

# CreateUnoListener Function

Создаёт экземпляр прослушивающего процесса.

Во многих интерфейсах 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.