IBM Lotus Symphony
|
Powoduje utworzenie instancji funkcji nasłuchiwania.
Wiele interfejsów UNO umożliwia zarejestrowanie obiektu nasłuchiwania w specjalnym interfejsie nasłuchiwania. Pozwala to wykrywać określone zdarzenia i wywoływać odpowiednie metody nasłuchiwania. Funkcja CreateUnoListener czeka na wywołany interfejs nasłuchiwania i przekazuje do niego obiekt obsługiwany przez ten interfejs. Następnie obiekt jest przekazywany do metody w celu zarejestrowania go.
oObiekt_nasłuchiwania = CreateUnoListener(Przedrostek, Nazwa_interfejsu_nasłuchiwania)
Poniższy przykład bazuje na obiekcie z biblioteki języka Basic.
Dim oNasluch
oNasluch = CreateUnoListener("ContListener_","com.sun.star.container.XContainerListener")
Metoda CreateUnoListener wymaga podania dwóch parametrów. Pierwszy to przedrostek, którego znaczenie zostało wyjaśnione poniżej. Drugi to pełna nazwa interfejsu nasłuchiwania, który ma zostać użyty.
Obiekt nasłuchiwania musi zostać dodany do obiektu rozgłaszania. W tym celu należy wywołać metodę dodającą obiekt nasłuchiwania. Metody te mają zawsze postać addFooListener, gdzie Foo to typ interfejsu nasłuchiwania bez X. W tym przykładzie metoda addContainerListener jest wywoływana w celu zarejestrowania obiektu nasłuchiwania XContainerListener:
Dim oBibl
oBibl = BasicLibraries.Library1 ' Biblioteka Library1 musi istnieć!
oBibl.addContainerListener(oNasluch) ' Rejestrowanie obiektu nasłuchiwania
Obiekt nasłuchiwania zostanie zarejestrowany. Po wystąpieniu zdarzenia odpowiedni obiekt wysłuchiwania wywoła właściwą metodę z interfejsu com.sun.star.container.XContainerListener.
Przedrostek służy do wywoływania zarejestrowanych obiektów nasłuchiwania z procedur podrzędnych języka Basic. W środowisku wykonawczym języka Basic wyszukiwane są funkcje lub procedury podrzędne o nazwie PrzedrostekMetodaObiekt_nasłuchiwania, które po znalezieniu są wywoływane. W przeciwnym przypadku generowany jest błąd czasu wykonywania.
W tym przykładzie interfejs nasłuchiwania używa następujących metod:
disposing:
Podstawowy interfejs nasłuchiwania (com.sun.star.lang.XEventListener), na którym bazują wszystkie interfejsy nasłuchiwania.
elementInserted:
Metoda interfejsu com.sun.star.container.XContainerListener.
elementRemoved:
Metoda interfejsu com.sun.star.container.XContainerListener.
elementReplaced:
Metoda interfejsu com.sun.star.container.XContainerListener.
W tym przykładzie przedrostek to ContListener_. W języku Basic muszą zostać zaimplementowane następujące procedury podrzędne:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
W przypadku każdego typu obiektu nasłuchiwania istnieje typ struktury zdarzenia z informacjami o zdarzeniu. Podczas wywoływania metody obiektu nasłuchiwania instancja tego zdarzenia jest przekazywana do metody w formie parametru. Metody obiektu nasłuchiwania w języku Basic mogą również wywoływać te obiekty zdarzeń, o ile parametr zostanie przekazany w deklaracji Sub. Na przykład:
Sub ContListener_disposing(oZdarzenie)
MsgBox "disposing"
MsgBox oZdarzenie.Dbg_Properties
End Sub
Sub ContListener_elementInserted(oZdarzenie)
MsgBox "elementInserted"
MsgBox oZdarzenie.Dbg_Properties
End Sub
Sub ContListener_elementRemoved(oZdarzenie)
MsgBox "elementRemoved"
MsgBox oZdarzenie.Dbg_Properties
End Sub
Sub ContListener_elementReplaced(oZdarzenie)
MsgBox "elementReplaced"
MsgBox oZdarzenie.Dbg_Properties
End Sub
Jeśli obiekt zdarzenia nie jest używany, nie trzeba uwzględniać jego parametru:
' Minimalna implementacja procedury podrzędnej dla metody disposing
Sub ContListener_disposing
End Sub
![]() |
Aby uniknąć błędów w czasie wykonywania kodu Basic, należy zawsze implementować metody obiektu nasłuchiwania. |