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.