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Ä LibreOfficeDev 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