Fonction CreateUnoListener

Crée une instance Listener.

De nombreux objets Uno vous permettent d'enregistrer des écouteurs avec des interfaces d'écoute dédiées. Cela permet d'écouter des événements spécifiques et d'appeler la méthode d'écoute appropriée. La fonction CreateUnoListener définit une interface d'écoute associée à un objet UNO. L'interface d'écoute est alors liée à son objet associé.

Syntaxe :


    CreateUnoListener( Prefix As String, Typename As String) As Object

Paramètres :

Prefix : un préfixe de texte utilisé dans les sous-programmes BASIC qui gèrent les événements.

Typename : nom complet de l'interface d'écoute UNO.

Valeur de retour :

Le service UNO correspondant au nom de l'interface d'écoute Typename, valeur Null sinon.

Exemple :

L'exemple suivant écoute les événements se produisant pour un objet de bibliothèque BASIC.


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

La méthode CreateUnoListener nécessite deux paramètres. Le premier est Prefix et est expliqué en détail ci-dessous. Le deuxième paramètre Typename est le nom complet de l'interface d'écoute.

Chaque auditeur doit être enregistré sur la fonction diffuseur de LibreOffice. Ceci est effectué en liant chaque écouteur à son objet associé. Les méthodes de liaison suivent toujours le modèle 'addFooListener', où 'Foo' est le type d'objet de l'interface d'écoute, sans le 'X'. Dans cet exemple, la méthode addContainerListener est appelée pour enregistrer le XContainerListener :


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

L'auditeur est maintenant enregistré. Lorsqu'un événement se produit, l'écouteur actif appelle la méthode appropriée définie dans l'interface com.sun.star.container.XContainerListener.

Les sous-programmes BASIC enregistrés pilotés par événement nécessitent l'utilisation de Prefix défini. Le système d'exécution BASIC recherche les sous-programmes ou les fonctions portant le nom 'Prefix+ListenerMethod' et les appelle lorsqu'ils sont trouvés. Sinon, une erreur d'exécution se produit.

Dans cet exemple, l'interface com.sun.star.container.XContainerListener définit les méthodes suivantes :

méthode

description

disposing

Interface de base pour toutes les interfaces d'écoute com.sun.star.lang.XEventListener

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


'ContListener_' utilisé dans cet exemple implique que les sous-programmes suivants doivent être implémentés en BASIC :

Chaque interface d'écoute définit un ensemble de noms d'événements contrôlés associés aux objets Uno. Lorsqu'un événement se produit, il est envoyé à la méthode en tant que paramètre. Les méthodes d'événement BASIC peuvent également s'appeler, tant que le paramètre approprié est passé dans la déclaration Sub. Par exemple :


Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
    MsgBox "disposing"
End Sub
 
Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox oEvent.Source.' "elementInserted"
End Sub
 
Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementRemoved"
End Sub
 
Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementReplaced"
End Sub

Pas besoin d'inclure le paramètre d'objet d'événement lorsqu'il n'est pas utilisé :


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

Les méthodes d'écoute doivent toujours être implémentées pour éviter les erreurs d'exécution BASIC.


tip

Utilisez la console de la bibliothèque ScriptForge lorsque l'IDE BASIC n'est pas facilement accessible, c'est-à-dire pendant le traitement des événements. Utilisez la méthode DebugPrint pour ajouter toute information pertinente à la console. Les entrées de la console peuvent être vidées dans un fichier texte ou visualisées dans une fenêtre de dialogue. Utilisez le module Trace de la bibliothèque Access2Base comme alternative.



   Sub SF_Trace
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      svc = CreateScriptService("ScriptForge.Exception")
      svc.Console modal:=False
      svc.DebugPrint("Lorem", "Ipsum", "...")
   End Sub ' SF_Trace
   
   Sub A2B_Trace
      GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
      Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
      Access2Base.Trace.TraceConsole()
   End Sub ' A2B_Trace

Aidez-nous !