Contents
Index 🔎︎

# CreateUnoListener Function

Skapar en lyssnarinstans.

Många Uno-gränssnitt låter dig registrera lyssnare på speciella lyssnargränssnitt. På detta sätt kan du lyssna efter specifika händelser och anropa lämpliga lyssnarmetoder. Funktionen CreateUnoListener väntar på det anropade lyssnargränssnittet och skickar sedan ett objekt till gränssnittet som gränssnittet stöder. Detta objekt skickas sedan till metoden för att registrera lyssnaren.

## Syntax:

    oListener = CreateUnoListener( Prefixnamn, Lyssnargränssnittsnamn )

## Exempel:

Följande exempel baseras på ett Basic-biblioteksobjekt.

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

Metoden CreateUnoListener kräver två parametrar. Den första är ett prefix och förklaras utförligt nedan. Den andra parametern är det fullständiga namnet för lyssnargränssnittet som du vill använda.

Lyssnaren måste sedan läggas till i Broadcaster-objektet. Detta åstadkoms genom att lämplig metod för tillägg av en lyssnare anropas. Metoderna följer alltid mönstret "addFooListener", där "Foo" är lyssnargränssnittstypen utan 'X'. I det här exemplet anropas metoden addContainerListener för att registrera XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Bibliotek1 ' Bibliotek1 måste finnas!
    oLib.addContainerListener( oListener ) ' Registrera lyssnaren

Lyssnaren är nu registrerad. När en händelse inträffar anropar motsvarande lyssnare lämplig metod från gränssnittet com.sun.star.container.XContainerListener.

Prefixet anropar registrerade lyssnare från Basic-subrutiner. Basic-runtimesystemet söker efter Basic-subrutiner eller funktioner som har namnet "PrefixListenerMethode" och anropar dem när de hittas. Annars inträffar ett runtime-fel.

I det här exemplet använder lyssnargränssnittet följande metoder:

- disponering:

- basgränssnitt för lyssnare (com.sun.star.lang.XEventListener): basgränssnitt för alla lyssnargränssnitt

- elementInserted:

- Metod för gränssnittet com.sun.star.container.XContainerListener

- elementRemoved:

- Metod för gränssnittet com.sun.star.container.XContainerListener

- elementReplaced:

- Metod för gränssnittet com.sun.star.container.XContainerListener

I det här exemplet är prefixet ContListener_. Följande subrutiner måste därför implementeras i Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

En händelsestruktur som innehåller information om en händelse finns för varje lyssnartyp. När en lyssnarmetod anropas skickas en instans av den här händelsen till metoden som en parameter. Basic-lyssnarmetoder kan också anropa de här händelseobjekten så länge som lämpliga parametrar skickas i Sub-deklarationen. Till exempel:

    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 inte inkludera parametern för ett händelseobjekt om det inte används:

    ' Minimal implementering av Sub-disponering
    Sub ContListener_disposing
    End Sub

Lyssnarmetoder måste alltid implementeras för att undvika Basic runtime-fel.