LibreOffice 24.2 Hjelp
Oppretter en Listener-forekomst.
Mange Uno-objekter lar deg registrere lyttere med dedikerte lyttergrensesnitt. Dette gjør det mulig å lytte etter spesifikke hendelser og hente frem den aktuelle lyttermetoden. Funksjonen CreateUnoListener setter et lyttergrensesnitt knyttet til et UNO-objekt. Lyttergrensesnittet er så bundet til det tilhørende objektet.
    CreateUnoListener( Prefix As String, Typename As String) As Object
Prefiks: Et tekstprefiks som brukes i BASIC-underrutiner som håndterer hendelser.
Typename: Et fullstendig kvalifisert UNO-listener-grensesnittnavn.
UNO-tjenesten som tilsvarer Typename-lyttergrensesnittnavnet, ellers Null-verdi.
Følgende eksempel lytter til hendelser som oppstår for et BASIC-bibliotekobjekt.
Dim oListener As Object
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Metoden CreateUnoListener krever to parametere. Den første er Prefiks og er forklart i detalj nedenfor. Typenavn andre parameter er det fullstendige navnet på lyttergrensesnittet.
Hver lytter må være registrert på LibreOffice kringkasterfunksjonen. Dette utføres ved å binde hver lytter til det tilhørende objektet. Bindmetoder følger alltid mønsteret 'legg tilFooListener', der "Foo" er objekttypen til lyttegrensesnittet, uten "X". I dette eksemplet anropesaddContainerListener metoden anropes for å registrereXContainerListener:
Dim oLib As Object
oLib = BasicLibraries.Library1 ' Library1 må eksistere!
oLib.addContainerListener( oListener ) ' Registrer lytteren
Lytteren er nå registrert. Når en hendelse inntreffer, kaller den aktive lytteren den aktuelle metoden definert i com.sun.star.container.XContainerListener grensesnitt.
Hendelsesdrevne registrerte BASIC-underrutiner krever å bruke et definert Prefiks. BASIC runtime-systemet søker etter subrutiner eller funksjoner som har navnet 'Prefix+ListenerMethod' og kaller dem når de blir funnet. Ellers oppstår det en kjøretidsfeil.
I dette eksempelet definerer grensesnittet com.sun.star.container.XContainerListener følgende metoder :
| metode | beskrivelse | 
|---|---|
| avhending | com.sun.star.lang.XEventListener basisgrensesnitt for alle lyttegrensesnitt | 
| elementInserted | Metode for com.sun.star.container.XContainerListener-grensesnittet | 
| elementRemoved | Metode for com.sun.star.container.XContainerListener-grensesnittet | 
| elementReplaced | Metode for com.sun.star.container.XContainerListener-grensesnittet | 
'ContListener_' brukt i dette eksemplet innebærer at følgende underrutiner må implementeres i BASIC:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Hvert lyttergrensesnitt definerer et sett med kontrollerte hendelsesnavn knyttet til Uno-objekter. Når en hendelse inntreffer, sendes den til metoden som en parameter. BASIC hendelsesmetoder kan også kalle hverandre, så lenge den aktuelle parameteren sendes i Sub-deklarasjonen. For eksempel:
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
Trenger ikke inkludere hendelsesobjektparameteren når den ikke brukes:
' Minimal implementering av Sub-avhending
Sub ContListener_disposing
End Sub
Lyttemetoder må alltid implementeres for å unngå BASIC kjøretidsfeil.
Bruk ScriptForge bibliotekkonsoll når BASIC IDE ikke er lett tilgjengelig, det vil si under behandling av hendelser. Bruk DebugPrint-metoden for å legge til relevant informasjon til konsollen. Konsolloppføringer kan dumpes til en tekstfil eller visualiseres i et dialogvindu. Bruk Trace-modulen til Access2Base-biblioteket som et alternativ
   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