Modul
Obsah
Index 🔎︎

# Funkce CreateUnoListener

Vytvoří instanci Listener.

Mnoho UNO rozhraní vám umožní registrovat listener ve speciálním rozhraní. Tak můžete naslouchat určitým událostem a volat při nich odpovídající naslouchací metodu. Funkce CreateUnoListener čeká v odpovídajícím rozhraní a poté rozhraní předá objektu, který toto rozhraní podporuje. Tento objekt bude předán zaregistrované metodě.

## Syntaxe:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Příklad:

Následující příklad je založen na knihovně objektů Basic.

    Dim oListener

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

Metoda CreateUnoListener vyžaduje dva parametry. První je prefix a podrobněji je vysvětlen níže. Druhý parametr je plně kvalifikovaný název rozhraní Listener, které chcete použít.

Listener poté musíte přidat k Broadcaster Object. To provedete zavoláním odpovídající metody pro přidání Listeneru. Tyto metody se vždy nazývají podle vzoru "addFooListener", kde "Foo" představuje typ rozhraní Listeneru bez 'X'. V tomto příkladu se volá metoda addContainerListener pro zaregistrování XContainerListener:

    Dim oLib

    oLib = BasicLibraries.Library1 ' Library1 musí existovat!

    oLib.addContainerListener( oListener ) ' Registerovat listener

Nyní je Listener zaregistrován. Když nastane událost, zavolá odpovídající Listener správnou metodu z rozhraní com.sun.star.container.XContainerListener.

Prefix volá registrované Listenery z podprogramů Basic. Za běhu Basic hledá procedury nebo funkce, které mají jméno "PrefixListenerMethode" a při nalezení je zavolá. Jinak dojde k chybě.

V tomto případě používá rozhraní Listener následující metody:

- disposing:

- Listener base interface (com.sun.star.lang.XEventListener): základní rozhraní pro všechna rozhraní Listener

- elementInserted:

- Metoda rozhraní the com.sun.star.container.XContainerListener

- elementRemoved:

- Metoda rozhraní the com.sun.star.container.XContainerListener

- elementReplaced:

- Metoda rozhraní the com.sun.star.container.XContainerListener

V tomto případě je prefixem 'ContListener_'. V jazyce Basic je proto třeba implementovat následující podprogramy:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Pro každý typ Listeneru existuje typ event structure obsahující informace o události. Když je zavolána metoda Listeneru, předá se metodě jako parametr instance této události. Metody Listeneru také mohou volat tyto objekty události, je-li v deklaraci Sub předán správný parametr. Například:

    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

Pokud objekt nepoužíváte, nemusíte přidávat jeho parametr:

    ' Minimální implementace Sub disposing

    Sub ContListener_disposing

    End Sub

Metody Listeneru musíte vždy implementovat, abyste předešli chybám Basic.