Spis treści
Indeks 🔎︎

# Funkcja CreateUnoListener

Funkcja tworzy instancję obiektu Listener (odbiornik).

Wiele obiektów UNO umożliwia rejestrację odbiorników za pomocą specjalnego interfejsu. Możesz więc nasłuchiwać określonych zdarzeń i wywołać odpowiednią metodę nasłuchiwania. Funkcja CreateUnoListener ustawia interfejs nasłuchiwania powiązany z obiektem UNO. Ten interfejs jest następnie powiązany z przypisanym mu obiektem.

### Składnia:

        CreateUnoListener( Prefix As String, Typename As String) As Object

### Parametry:

Prefix: Przedrostek tekstowy używany w podprogramach języka BASIC obsługujących zdarzenia.

Typename: W pełni kwalifikowana nazwa interfejsu odbiornika UNO.

### Zwracana wartość:

Usługa UNO odpowiadająca nazwie interfejsu odbiornika Typename lub wartości Null.

### Przykład:

Poniższy przykład nasłuchuje zdarzeń, które występują dla obiektu biblioteki BASIC.

    Dim oListener As Object
    oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

Metoda CreateUnoListener wymaga dwóch parametrów. Pierwszym z nich jest Prefix, który został szczegółowo wyjaśniony poniżej. Drugi parametr Typename to pełna nazwa interfejsu odbiornika.

Każdy odbiornik musi być zarejestrowany w funkcji nadawcy LibreOffice. Odbywa się to poprzez powiązanie każdego odbiornika z powiązanym z nim obiektem. Metody wiązania zawsze są zgodne ze wzorcem 'addFooListener', gdzie 'Foo' jest typem obiektu interfejsu odbiornika bez 'X'. W tym przykładzie metoda addContainerListener jest wywoływana w celu rejestracji XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Biblioteka Library1 musi istnieć
    oLib.addContainerListener( oListener ) ' Rejestracja odbiornika

Odbiornik jest teraz zarejestrowany. Gdy wystąpi zdarzenie, aktywny odbiornik wywołuje odpowiednią metodę zdefiniowaną w interfejsie com.sun.star.container.XContainerListener.

Rejestrowane procedury języka BASIC wyzwalane zdarzeniami wymagają parametru Prefix. W czasie wykonywania BASIC szuka procedur lub funkcji o nazwie 'Prefix+ListenerMethod' i wywołuje je, gdy zostaną znalezione. W przeciwnym razie wystąpi błąd czasu wykonywania.

W tym przykładzie interfejs com.sun.star.container.XContainerListener określa następujące metody:

metoda | opis
--- | ---
disposing | Podstawowy interfejs com.sun.star.lang.XEventListener dla wszystkich interfejsów odbiornika
elementInserted | Metoda interfejsu com.sun.star.container.XContainerListener
elementRemoved | Metoda interfejsu com.sun.star.container.XContainerListener
elementReplaced | Metoda interfejsu com.sun.star.container.XContainerListener

'ContListener_' użyty w tym przykładzie sugeruje, że w języku BASIC należy zaimplementować następujące podprogramy:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Każdy interfejs nasłuchujący określa zestaw kontrolowanych nazw zdarzeń powiązanych z obiektami UNO. Gdy wystąpi zdarzenie, jest ono wysyłane do metody jako parametr. Metody zdarzeń BASIC mogą również wywoływać się nawzajem, o ile odpowiedni parametr zostanie przekazany w deklaracji Sub. Na przykład:

    Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
        MsgBox "disposing"
    End Sub

    Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox oEvent.Source.' "elementInserted"
    End Sub

    Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementRemoved"
    End Sub

    Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementReplaced"
    End Sub

Nie trzeba dołączać parametru obiektu zdarzenia, gdy nie jest używany:

    ' Minimalna implementacja programu Sub disposing (wyrzucanie)
    Sub ContListener_disposing
    End Sub

Metody nasłuchiwania muszą być zawsze implementowane, aby uniknąć błędów wykonania BASIC.

Użyj konsoli biblioteki ScriptForge, gdy IDE BASIC nie jest łatwo dostępny, czyli podczas przetwarzania zdarzeń. Użyj metody DebugPrint, aby dodać odpowiednie informacje do konsoli. Wpisy konsoli można zrzucić do pliku tekstowego lub zwizualizować w oknie dialogowym. Użyj modułu Trace biblioteki Access2Base jako alternatywy

       Sub SF_Trace
          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          svc = CreateScriptService("ScriptForge.Exception")
          svc.Console modal:=False
          svc.DebugPrint("Lorem", "Ipsum", "...")
       End Sub ' SF_Trace

       Sub A2B_Trace
          GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
          Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
          Access2Base.Trace.TraceConsole()
       End Sub ' A2B_Trace

Tematy pokrewne

Tworzenie detektorów zdarzeń

Mapowanie zdarzeń na obiekty

Zobacz też Zdarzenia dokumentu, Zdarzenia formularza.

Tworzenie okna dialogowego z modułem obsługi

Nałuchiwanie zdarzeń w dokumencie