|
IBM Lotus Symphony
|
Vytvoří instanci modulu pro naslouchání (Listener).
Mnohá rozhraní Uno umožňují registraci modulů pro naslouchání v rámci speciálního rozhraní modulů pro naslouchání. Tak je umožněno naslouchání se zřetelem ke specifickým událostem a také výběr vhodné metody naslouchání. Funkce CreateUnoListener vyčká na odezvu volaného rozhraní modulů pro naslouchání a poté tomuto rozhraní předá objekt, který rozhraní podporuje. Objekt je poté předán metodě pro registraci modulů pro naslouchání.
oListener = CreateUnoListener( NázevPředpony, NázevRozhraníModulůProNaslouchání )
V následujícím příkladu je použit objekt knihovny Basic.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Metoda CreateUnoListener vyžaduje dva parametry. Prvním parametrem je předpona (podrobnější popis následuje dále). Druhým parametrem je úplný název rozhraní modulů pro naslouchání, které chcete použít.
Modul pro naslouchání (Listener) je poté nutné přidat do objektu Broadcaster. To lze provést voláním odpovídající metody pro přidání modulu pro naslouchání (Listener). Pro tyto metody je vždy použit vzorec "addFooListener", kde řetězec "Foo" označuje typ rozhraní modulů pro naslouchání, bez znaku 'X'. V tomto příkladu je pro registraci modulu XContainerListener volána metoda addContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 must exist!
oLib.addContainerListener( oListener ) ' Register the listener
Modul pro naslouchání je nyní registrován. Při výskytu události vyvolá odpovídající modul pro naslouchání vhodnou metodu v rámci rozhraní com.sun.star.container.XContainerListener.
Ze subrutin jazyka Basic jsou prostřednictvím předpony volány registrované moduly pro naslouchání. Běhový systém modulu Basic vyhledá funkce či subrutiny jazyka Basic s názvy odpovídajícími struktuře "PředponaModul_pro_nasloucháníMetoda". Po nalezení jsou tyto funkce a subrutiny vyvolány. Pokud to není možné, dojde k běhové chybě.
V tomto příkladu jsou pro dvojice Modul pro naslouchání-Rozhraní použity následující metody:
disposing:
Základní rozhraní modulů pro naslouchání (com.sun.star.lang.XEventListener): základní rozhraní pro všechna rozhraní modulů pro naslouchání
elementInserted:
Metoda rozhraní com.sun.star.container.XContainerListener
elementRemoved:
Metoda rozhraní com.sun.star.container.XContainerListener
elementReplaced:
Metoda rozhraní com.sun.star.container.XContainerListener
V tomto příkladu je jako předpona použit řetězec ContListener_. V produktu Basic proto musí být implementovány následující subrutiny:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Pro každý typ modulu pro naslouchání existuje typ struktury události obsahující informace o určité události. Je-li volána některá metoda modulu pro naslouchání, bude této metodě jako parametr předána instance této události. Tyto objekty událostí mohou být volány také metodami modulů pro naslouchání Basic, pokud je v rámci deklarace subrutiny předán příslušný parametr. Pří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
Není-li některý objekt události použit, není nutné zadávat odpovídající parametr:
' Minimal implementation of Sub disposing
Sub ContListener_disposing
End Sub
![]() |
Metody modulů listener musí být vždy implementovány s ohledem na předcházení běhovým chybám jazyka Basic. |