Функция CreateUnoListener

Създава екземпляр на интерфейса Listener.

Много интерфейси на Uno ви позволяват да регистрирате слушател чрез специален интерфейс (Listener). Така можете да следите за определени събития и да извиквате съответния метод на слушателя. Функцията CreateUnoListener изчаква извикания интерфейс на слушател, след което подава на интерфейса обект, поддържан от него. Този обект се предава на метода, за да регистрира слушателя.

Синтаксис:

oListener = CreateUnoListener(Prefixname, ListenerInterfaceName)

Пример:

Следващият пример е базиран на обект от библиотека на 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 търси процедури или функции с името „PrefixListenerMethode“ и ги извиква, ако бъдат намерени. В противен случай възниква грешка по време на изпълнение.

В този пример интерфейсът на слушател използва следните методи:

В този пример префиксът е ContListener_. Следователно в кода на 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
Икона Внимание

Методите на слушателя трябва винаги да са реализирани, за да се избегнат грешки по време на изпълнение.


Моля, подкрепете ни!