CreateUnoListener-funksjonen

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.

Syntaks:


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

Parametre:

Prefiks: Et tekstprefiks som brukes i BASIC-underrutiner som håndterer hendelser.

Typename: Et fullstendig kvalifisert UNO-listener-grensesnittnavn.

Returverdi:

UNO-tjenesten som tilsvarer Typename-lyttergrensesnittnavnet, ellers Null-verdi.

Eksempel:

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:

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
warning

Lyttemetoder må alltid implementeres for å unngå BASIC kjøretidsfeil.


tip

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

Supporter oss!