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ě.
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
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.