Modul
Indhold
Indholdsfortegnelse 🔎︎

# CreateUnoListener-funktion

Opretter en lytte-forekomst.

Mange Uno-grænseflader lader dig registrere lyttere på et specielt lytteinterface. Dette giver dig mulighed for at lytte efter specifikke hændelser og kalde den passende lyttemetode. Funktionen CreateUnoListener venter på det kaldte lytteinterface og overfører derefter et objekt til interfacet som interfacet understøtter. Dette objekt bliver så videregivet til metoden for at registrere lytteren.

## Syntaks:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Eksempel:

Følgende eksempel er baseret på et Basic biblioteksobjekt.

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

Metoden CreateUnoListener kræver to parametre. Den første er et præfiks og er forklaret i detaljer forneden. Den anden parameter er det fuldt kvalificerede navn på lytte-interfacet som du vil bruge.

Lytteren skal så tilføjes til Broadcasterobjektet. Dette bliver gjort ved at kalde den passende metode til at tilføje en lytter. Disse metoder følger altid mønsteret "addFooListener", hvor "Foo" er lytterinterface-typen, uden 'X'. I dette eksempel, kaldes metoden addContainerListener for at registrere XContainerListener:

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

Lytteren er nu registreret. Når en hændelse forekommer, kalder den tilsvarende lytter den passende metode fra interfacet com.sun.star.container.XContainerListener.

Præfikset kalder registrerede lyttere fra Basic-subrutiner. Basic kørselstidssystemet leder efter Basic-subrutiner eller funktioner som har navnet "PrefixListenerMethode" og kalder dem når de er fundet. Ellers vil en kørselsfejl forekomme.

I dette eksempel bruger lytteinterfacet følgende metoder:

- disposing:

- Lytte-basis-interface (com.sun.star.lang.XEventListener): Basis interface for alle lytteinterfaces

- elementInserted:

- Metode for interfacet com.sun.star.container.XContainerListener

- elementRemoved:

- Metode for interfacet com.sun.star.container.XContainerListener

- elementReplaced:

- Metode for interfacet com.sun.star.container.XContainerListener

I dette eksempel er præfikset ContListener_. De følgende subrutiner skal derfor være implementeret i Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

En hændelsesstruktur-type som indeholder information om en hændelse, eksisterer for hver listener-type. Når en lyttemetode bliver kaldt, bliver en forekomst af denne hændelse videregivet til metoden som en parameter. Basic lyttemetoder kan også kalde disse hændelsesobjekter, så længe at en passende parameter bliver overført i Sub-erklæringen. For eksempel:

    Sub ContListener_disposing( oEvent )
        MsgBox "disposing"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementInserted( oEvent )
        MsgBox "elementInserted"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementRemoved( oEvent )
        MsgBox "elementRemoved"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementReplaced( oEvent )
        MsgBox "elementReplaced"
        MsgBox oEvent.Dbg_Properties
    End Sub

Du behøver ikke at inkludere parameteren på et hændelsesobjekt hvis objektet ikke er brugt:

    ' Minimal implementering af sub disposing
    Sub ContListener_disposing
    End Sub

Lyttemetoder skal altid være implementeret for at undgå Basic-kørselsfejl.