CreateUnoListener-funksjon

Innhold
Innholdsliste 🔎︎

# 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:

- 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:=Usann
          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

Lignende emner

Oppretting av handlingsLyttere

Hendelseskartlegging til objekter

Se også Dokumenthendelser, skjemahendelser.

Opprett en dialoghåndterer

Lytte til dokumenthendelser