Module
Contenu
Index 🔎︎

# Fonction CreateUnoListener

Crée une instance Listener.

De nombreuses interfaces Uno permettent d'enregistrer des auditeurs dans une interface Listener dédiée. Cela permet de détecter des événements spécifiques et d'appeler la méthode Listener appropriée. La fonction CreateUnoListener attend l'interface Listener appelée et lui transmet un objet que celle-ci supporte. Cet objet est ensuite transmis à la méthode afin que l'auditeur soit enregistré.

## Syntaxe :

    oListener = CreateUnoListener(Prefixname, ListenerInterfaceName)

## Exemple :

L'exemple suivant est basé sur un objet de la bibliothèque Basic.

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

La méthode CreateUnoListener nécessite deux paramètres. Le premier, un préfixe, est expliqué en détail ci-dessous. Le deuxième paramètre est le nom complet de l'interface Listener à utiliser.

Celle-ci doit ensuite être ajoutée à l'objet Broadcaster. Pour ce faire, vous devez appeler la méthode appropriée d'ajout d'interface Listener. Ces méthodes sont toujours construites sur le modèle "addFooListener", où "Foo" représente le type d'interface Listener sans le 'X'. Dans cet exemple, la méthode addContainerListener est appelée pour enregistrer XContainerListener :

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 doit exister !
    oLib.addContainerListener( oListener ) ' Enregistrer l'auditeur

L'auditeur est désormais enregistré. Lorsqu'un événement se produit, l'auditeur correspondant appelle la méthode appropriée depuis l'interface com.sun.star.container.XContainerListener.

Le préfixe appelle les auditeurs enregistrés dans les sous-routines Basic. Le système d'exécution Basic recherche les sous-routines ou les fonctions nommées "PrefixListenerMethode" et les appelle. Sinon, une erreur d'exécution se produit.

Dans cet exemple, l'interface Listener utilise les méthodes suivantes :

- disposing :

- interface de base Listener (com.sun.star.lang.XEventListener) : interface de base de toutes les interfaces Listener

- elementInserted :

- Méthode de l'interface com.sun.star.container.XContainerListener

- elementRemoved :

- Méthode de l'interface com.sun.star.container.XContainerListener

- elementReplaced :

- Méthode de l'interface com.sun.star.container.XContainerListener

Dans cet exemple, le préfixe est ContListener_. Par conséquent, les sous-routines suivantes doivent être implémentées dans Basic :

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Un type de structure d'événement contenant des informations sur un événement donné existe pour chaque type d'auditeur. Dès qu'une méthode Listener est appelée, une instance de cet événement est transmise à la méthode sous forme de paramètre. Les méthodes Listener de Basic peuvent également appeler ces objets d'événements. Pour cela, le paramètre approprié doit être transmis dans la déclaration Sub. Exemple :

    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

Il n'est pas nécessaire d'inclure le paramètre d'un objet d'événement si cet objet n'est pas utilisé :

    ' Implémentation minimale de Sub disposing
    Sub ContListener_disposing
    End Sub

Les méthodes Listener doivent toujours être implémentées afin d'éviter des erreurs d'exécution de Basic.