Indhald
Innhaldsliste 🔎︎

# CreateUnoListener-funksjonen

Lagar ein lyttarinstans

Mange Uno-grensesnitt let deg registrera lyttarar på spesielle lyttargrensesnitt. På denne måten kan du lytta etter bestemte hendingar og kalla opp den passande lyttemetoden. Funksjonen CreateUnoListener ventar på det oppkalla lyttargrensesnittet og fører deretter over eit objekt til grensesnittet som grensesnittet har støtte for. Dette objektet vert sidan overført til metoden for å registrera lyttaren.

### Syntaks:

oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

### Eksempel:

Dette eksemplet er basert på eit Basic bibliotekobjekt.

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

Metoden CreateUnoListener krev to parameter. Den første er eit prefiks og er forklart i detaljar nedanfor. Den andre parameteren er det fullstendige namnet på lytte-grensesnittet som du vil bruka.

Lyttaren må deretter leggjast til i Broadcaster-objektet. Dette vert gjort ved å kalla opp den passande metoden for å leggja til ein lyttar. Denne metoden følgjer alltid mønsteret "addFooListener" der "Foo" er lyttargrensesnitttypen utan 'X'. I dette eksemplet vert metoden addContainerListener kalla op for å registrera XContainerListener:

    Dim oLib
    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 frå com.sun.star.container.XContainerListener Interface.

Prefikset kallar opp registrerte lyttarar frå Basic-subrutiner. Basic køyretidssytemet søkjer etter Basic subrutiner eller funksjonar med namnet "PrefixListenerMethode" og kallar dei opp når dei vert funne. Elles oppstår det ein køyretidsfeil.

I dette eksemplet brukar lyttar-grensesnittet desse metodane:

- disposing:

- Basegrensesnittet for lyttarar (com.sun.star.lang.XEventListener): basegrensesnitt for alle lyttar-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

I dette eksemplet er prefikset ContListener_. Desse subrutinene må difor vera implementerte i Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Ein hendingsstrukturtype som inneheld informasjon om ei hending finst for kvar lyttar-type. Når ein lyttar-metode vert kalla opp, vert ei førekomst av denne hendinga overført til metoden som parameter. Basic-lyttarmetodar kan også kalla opp desse hendingsobjekta så lenge høvelege parameter vert overførte i del-deklarasjonen. 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 treng ikkje ta med parameteren for eit hendingsobjekt viss objektet ikkje er brukt:

    ' Minimal implementering av Sub-disposing
    Sub ContListener_disposing
    End Sub

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