Obsah
Rejstřík 🔎︎

# Funkce CreateUnoListener

Vytvoří instanci Listener.

Mnoho UNO rozhraní vám umožní registrovat posluchač 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 objektu Listener je nutné vždy implementovat, abyste předešli chybám Basicu.