Innhald
Innhaldsliste 🔎︎

# CreateUnoListener-funksjonen

Lagar ein lyttarinstans

Mange Uno-objekt let deg registrera lyttarar med dedikerte lyttargrensesnitt. Dette gjer det mogleg å lytta etter bestemte hendingar og kalla opp rett lyttarmetode.Funksjonen CreateUnoListener gjev eit lyttargrensesnitt som er knytt til eit UNO-objekt. Lyttargrensesnittet er då bunde til det tilknytte objektet.

### Syntaks:

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

### Parametrar:

Prefix: Eit tekstprefiks som vert brukt i BASIC sub-rutiner som handsamar hendingar.

Typename: Eit fullt kvalifisert namn på UNO-lyttargrensesnitt.

### Returverdi:

UNO-tenesta som svarar til lyttargrensesnittnamnet Typename, elles verdien Null.

### Eksempel:

Eksempelet nedanfor lyttar til hendingar som skjer for eit BASIC bibliotekobjekt.

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

Metoden CreateUnoListener krev to parameter. Den første er Prefiks og er forklart i detaljar nedanfor. Den andre parameteren er Typename som er det fullt kvalifiserte namnet på lyttar-grensesnittet.

Kvar lyttar må vera registrert i funksjonen LibreOffice broadcaster. Dette vert gjort ved å binda kvar lyttar til det tilknytte objektet. Bind-metodar følgjer alltid mønsteret 'addFooListener', der 'Foo' er objekttypen til lyttargrensesnittet, utan 'X'. I dette eksempelet vert metoden addContainerListener kalla opp for å registrera XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 må finnast.
    oLib.addContainerListener( oListener ) ' Register lyttaren

Lyttaren er nå registrert. Når det skjer ei hending, vil den tilsvarande lyttaren kalla opp den passande metoden definert i grensesnittet com.sun.star.container.XContainerListener.

Hendingsdrivne registrerte BASIC-subrutinar krev bruk av eit definert Prefiks. BASIC køyretidssystemsystem søjker etter subrutiner eller funksjonar som har namnet 'Prefix + ListenerMethod' og kallar dei opp når dei vert funne. Elles oppstår det ein køyretidsfeil.

I dette eksempelet vil grensesnittet com.sun.star.container.XContainerListener definera desse metodane:

metode | beskriving
--- | ---
disposing | com.sun.star.lang.XEventListener base grensesnitt for alle Listener-grensesnitt
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_' som vert brukt i dette eksempelet inneber at følgjande subrutinar må implementerast i BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Kvart lyttargrensesnitt definerer eit sett med kontrollerte hendingsnamn knytte til Uno-objekt. Når ei hending oppstår, vert ho sendt til metoden som ein parameter. BASIC-hendingsmetodar kan også kalla opp kvarandre, så lenge den aktuelle parameteren er sendt gjennom deklarasjonen Sub. 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

Du treng ikkje å ta med hendingsobjektparameteren når han ikkje vert brukt:

    ' Minimal implementering av Sub-disposing
    Sub ContListener_disposing
    End Sub

Lyttarmetodar må alltid implementerast for å unngå BASIC køyretidsfeil.

Bruk bibliotekkonsollen ScriptForge når BASIC IDE ikkje er lett tilgjengeleg, det vil seia ved handsaming av hendingar. Bruk metoden DebugPrint for å leggja relevant informasjon til i konsollen. Oppføringar i konsollen kan setjast inn i ei tekstfil eller gjerast synlege i eit dialogvindauge. Bruk modulen Trace i biblioteket Access2Base som eit 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

Liknande emne

Oppretting av hendingslyttarar

Tilordning av hendingar til objekt

Sjå også Dokumenthendingar, Skjemahendingar.

Laga ein handsamar for dialogvindauge

Lytta til dokumenthendingar