Indhold

# CreateUnoListener-funktion

Opretter en Listener (lytte)-instans.

Mange Uno-objekter lader dig registrere lyttere (listeners) med dedikerede listener-grænseflader. Dette tillader lytning efter specifikke hændelser og kald af den relevante listener-metode. Funktionen CreateUnoListener angiver en listener-grænseflade tilknyttet et Uno-objekt. Listener-grænsefladen er så bundet til det tilknyttede objekt.

### Syntaks:

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

### Parametre:

Navn | Type | Beskrivelse
--- | --- | ---
Prefix | String | Et tekstpræfiks brugt i BASIC-subrutiner, som håndterer hændelser.
Typename | String | Et fuldt kvalificeret UNO-listener grænsefladenavn.

### Returtype

Object. Den UNO-tjeneste, som svarer til Typename-listener-grænsefladenavnet, ellers Null-værdi.

### Eksempel:

Det følgende eksempel lytter til hændelser, som forekommer for et BASIC-biblioteksobjekt.

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

Metoden CreateUnoListener kræver to parametre. Den første er Prefix og er beskrevet i detaljer nedenfor. Den anden parameter Typename er det fuldt kvalificerede navn på listener-grænsefladen.

Enhver lytter (listener) skal være registret hos LibreOffice broadcaster-funktionen. Dette gøres ved at binde hver lytter til sit tilknyttede objekt. Bindingsmetoder følger altid mønsteret 'addFooListener', hvor 'Foo' er objekttypen for listener-grænsefladen, uden 'X'. I dette eksempel bliver metoden addContainerListener kaldet for at registrere XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 skal eksistere!
    oLib.addContainerListener( oListener ) ' Registrerer lytteren

Lytteren er nu registreret. Når der sker en hændelse, kalder den aktive lytter den relevante metode defineret i com.sun.star.container.XContainerListener-grænsefladen.

Hændelses-drevne registrerede BASIC-subrutiner kræver brug af et defineret Prefix. BASIC-afviklingssystemet søger efter subrutiner eller funktioner, som har navnet 'Prefix+ListenerMethod' og kalder dem, når de bliver fundet. Eller sker der en kørselsfejl.

I dette eksempel definerer com.sun.star.container.XContainerListener-grænsefladen de følgende metoder:

metode | beskrivelse
--- | ---
disposing | com.sun.star.lang.XEventListener basisgrænseflade for alle Listener-grænseflader.
elementInserted | Metode for com.sun.star.container.XContainerListener-grænsefladen.
elementRemoved | Metode for com.sun.star.container.XContainerListener-grænsefladen.
elementReplaced | Metode for com.sun.star.container.XContainerListener-grænsefladen.

'ContListener_' brugt i dette eksempel indebærer, at de følgende subrutine skal være implementeret i BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Enhver lytter-grænseflade (listener) definerer et sæt kontrollerede hændelsesnavne tilknyttet Uno-objekter. Når en hændelse sker, bliver den sendt til metoden som parameter. BASIC-hændelsesmetoder kan også kalde hinanden, så længe den relevante parameter bliver overført i Sub-erklæringen. 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

Der er ikke behov for at inkludere hændelsesobjekt-parameteren, når den ikke bruges:

    ' Minimal implementering af sub disposing
    Sub ContListener_disposing
    End Sub

Lytter-metoder skal altid implementeres for at undgå BASIC-kørselsfejl.

Brug bibliotekskonsollen ScriptForge, når Basic IDE ikke er let tilgængeligt, dvs. under hændelseshåndtering. Brug DebugPrint-metoden til at tilføje relevant information til konsollen. Konsol-poster kan sendes til en tekstfil eller vises i et dialogvindue. Som et alternativ kan du bruge modulet Trace i biblioteket Access2Base.

       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

Relaterede emner

Oprettelse af Hændelses-Aflyttere

Hændelser med tilordnede objekter

Se også Dokument-hændelser og Formular-hændelser.

Oprette en dialoghåndtering

Lytning til dokumenthændelser

UNO-objekter, -funktioner og -tjenester

Støt os venligst!