Inhoud
Index 🔎︎

# Functie CreateUnoListener

Maakt een Listener-exemplaar.

Bij vele Uno-interfaces kunt u listeners op een speciale listener-interface registreren. Zo kunt u naar specifieke gebeurtenissen luisteren en de toepasselijke listener-methode aanroepen. De CreateUnoListener-functie wacht op de aangeroepen listener-interface en geeft de interface dan een object door dat door de interface ondersteund wordt. Dit object wordt vervolgens doorgegeven aan de methode om de listener te registreren.

### Syntaxis:

oListener = CreateUnoListener( Voorvoegselnaam, ListenerInterfacenaam )

### Voorbeeld:

Het volgende voorbeeld is op een Basic-bibliotheekobject gebaseerd:

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

Er zijn twee parameters vereist voor de CreateUnoListener-methode. De eerste is een voorvoegsel dat hieronder gedetailleerd wordt uitgelegd. De tweede is de volledige naam van de Listener-interface die u wilt gebruiken.

De Listener moet vervolgens aan het Broadcaster-object toegevoegd worden. U doet dit door de toepasselijke methode voor het toevoegen van een Listener op te roepen. Deze methodes volgen altijd het patroon addFooListener, waarbij 'Foo' het Listener-interfacetype is, zonder de 'X'. In dit voorbeeld wordt de addContainerListener-methode aangeroepen om de XContainerListener te registreren:

    Dim oLib
    oLib = BasicLibraries.Bibliotheek1 ' Bibliotheek1 moet bestaan!
    oLib.addContainerListener( oListener ) ' Registreer de Listener

De Listener is nu geregistreerd. Wanneer zich een gebeurtenis voordoet, roept de overeenkomstige Listener de toepasselijke methode uit de com.sun.star.container.XContainerListener-interface op.

Het voorvoegsel roept geregistreerde Listeners uit BASIC-subroutines op. Het BASIC-runtimesysteem zoekt naar BASIC-subroutines of -functies met de naam "VoorvoegselListenerMethode" en roept ze op wanneer ze gevonden worden. Zo niet, dan treedt er een run-time fout op.

In dit voorbeeld gebruikt de Listener-interface de volgende methodes:

- disposing:

- Listener-basisinterface (com.sun.star.lang.XEventListener): basisinterface voor alle Listener-interfaces

- elementInserted:

- Methode van de com.sun.star.container.XContainerListener-interface

- elementRemoved:

- Methode van de com.sun.star.container.XContainerListener-interface

- elementReplaced:

- Methode van de com.sun.star.container.XContainerListener-interface

In dit voorbeeld is het voorvoegsel ContListener_. De volgende subroutines moeten daarom in Basic geïmplementeerd worden:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Er is een gebeurtenisstructuurtype met informatie over een gebeurtenis voor elk Listener-type. Wanneer een Listener-methode wordt aangeroepen, wordt een exemplaar van deze gebeurtenis als parameter aan de methode doorgegeven. Listener-methodes van Basic kunnen deze gebeurtenisobjecten ook aanroepen, mits de toepasselijke parameter in de Sub-declaratie wordt doorgegeven. Voorbeeld:

    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

U hoeft de parameter van een gebeurtenisobject niet op te nemen als het object niet wordt gebruikt:

    ' Minimale implementatie van Sub disposing
    Sub ContListener_disposing
    End Sub

Listener-methodes moeten altijd geïmplementeerd worden om Basic run-time fouten te vermijden.