Spis treści
Indeks 🔎︎

# Funkcja CreateUnoListener

Funkcja tworzy instancję obiektu Listener (odbiornik).

Większość interfejsów obiektów Uno pozwala zarejestrować odbiorniki dla specjalnego interfejsu odbiornika. Pozwala to na nasłuchiwanie określonych zdarzeń i wywołanie odpowiedniej metody odbiornika. Funkcja CreateUnoListener czeka na wywołany interfejs odbiornika, a następnie przekazuje interfejsowi obsługiwany przez niego obiekt. Obiekt zostaje następnie przekazany do metody w celu zarejestrowania odbiornika.

## Składnia:

    oListener = CreateUnoListener( nazwa_prefiksu, nazwa_interfejsu_odbiornika)

## Przykład:

Poniższy przykład oparto na obiekcie biblioteki Basic.

    Dim oListener
    oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

Metoda CreateUnoListener wymaga dwóch parametrów. Pierwszy to prefiks, który szczegółowo został wyjaśniony poniżej. Drugim jest w pełni kwalifikowana nazwa interfejsu obiektu Listener (odbiornik), który ma zostać użyty.

Obiekt Listener (odbiornik) należy dodać do obiektu Broadcaster (nadajnik). Odbywa się to przez wywołanie odpowiedniej metody w celu jej dodania do obiektu Listener (odbiornik). Takie metody zawsze są uzupełnione wzorcem "addFooListener", gdzie "Foo" oznacza typ interfejsu odbiornika bez 'X'. W tym przykładzie metoda addContainerListener jest wywoływana w celu zarejestrowania obiektu XcontainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Biblioteka Library1 musi istnieć
    oLib.addContainerListener( oListener ) ' Rejestracja odbiornika

Odbiornik został zarejestrowany. W przypadku wystąpienia zdarzenia przypisany mu obiekt Listener (odbiornik) wywołuje odpowiednią metodę z interfejsu com.sun.star.container.XcontainerListener.

Prefiks wywołuje zarejestrowane obiekty Listener z podprogramów Basic. System uruchamiania programów Basic szuka odpowiednich podprogramów lub funkcji o nazwie "PrefixListenerMethode", a po ich znalezieniu wywołuje je. W przeciwnym razie występuje błąd wykonania.

W tym przykładzie interfejs obiektu Listener korzysta z następujących metod:

- disposing (wyrzucanie):

- Podstawowy interfejs odbiornika (com.sun.star.lang.XEventListener): podstawowy interfejs dla wszystkich interfejsów odbiornika

- elementInserted (element wstawiony):

- Metoda interfejsu com.sun.star.container.XContainerListener

- elementRemoved (element usunięty):

- Metoda interfejsu com.sun.star.container.XContainerListener

- elementReplaced (element zamieniony):

- Metoda interfejsu com.sun.star.container.XContainerListener

W tym przykładzie prefiksem jest ContListener_. W tym celu należy zaimplementować poniższe podprogramy Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

W każdym typie obiektu Listener występuje struktura zdarzeń zawierająca informacje o zdarzeniu. Po wywołaniu metody Listener interfejs zdarzenia zostaje przekazany do metody w postaci parametru. Metody obiektów Basic Listener także mogą wywoływać te obiekty zdarzeń, o ile w deklaracji Sub zostanie przekazany odpowiedni parametr. Na przykład:

    Sub ContListener_disposing( oEvent )
        MsgBox "disposing (wyrzucanie)"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementInserted( oEvent )
        MsgBox "elementInserted (element wstawiony)"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementRemoved( oEvent )
        MsgBox "elementRemoved (element usunięty)"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementReplaced( oEvent )
        MsgBox "elementReplaced (element zamieniony)"
        MsgBox oEvent.Dbg_Properties
    End Sub

Jeśli obiekt nie jest używany, nie ma potrzeby dołączania parametru obiektu zdarzenia:

    ' Minimalna implementacja programu Sub disposing (wyrzucanie)
    Sub ContListener_disposing
    End Sub

W celu uniknięcia błędów wykonania Basic należy zawsze implementować metody Listener.