Module
Contents
Index 🔎︎

# CreateUnoListener Function

Crea una instància d'oient.

Moltes interfícies d'Uno vos permeten registrar oients en una interfície d'oient especial. Això vos permet escoltar esdeveniments específics i cridar el mètode d'oient apropiat. La funció CreateUnoListener espera la interfície d'oient cridada i passa a la interfície un objecte que admet la interfície. Este objecte es passa al mètode per registrar l'oient.

## Sintaxi:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Exemple:

L'exemple següent es basa en un objecte de biblioteca del Basic.

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

El mètode CreateUnoListener requereix dos paràmetres. El primer és un prefix i s'explica detalladament a continuació. El segon paràmetre és el nom complet de la interfície d'oient que voleu utilitzar.

Llavors l'oient s'afig a l'objecte de difusió. Això es du a terme cridant el mètode apropiat per afegir un oient. Estos mètodes sempre segueixen el patró "addFooListener", en què "Foo" és el tipus d'interfície d'oient, sense la 'X'. En este exemple, el mètode addContainerListener es crida per registrar XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 must exist!
    oLib.addContainerListener( oListener ) ' Registra l'oient

L'oient ara està registrat. Quan es produeix un esdeveniment, l'oient corresponent crida el mètode apropiat des de la interfície de com.sun.star.container.XContainerListener.

El prefix crida els oients registrats de les subrutines del Basic. El sistema d'execució del Basic busca subrutines del Basic o funcions que tenen el nom "PrefixListenerMethode" i les crida quan les troba. Si no, es produeix un error d'execució.

En este exemple, la interfície d'oient utilitza els mètodes següents:

- disposing:

- Interfície de base d'oient (com.sun.star.lang.XEventListener): interfície de base per a totes les interfícies oients

- elementInserted:

- Mètode de la interfície de com.sun.star.container.XContainerListener

- elementRemoved:

- Mètode de la interfície de com.sun.star.container.XContainerListener

- elementReplaced:

- Mètode de la interfície de com.sun.star.container.XContainerListener

En este exemple, el prefix és ContListener_. Les subrutines següents s'han d'implementar, per tant, en Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Existeix un tipus d'estructura d'esdeveniment que conté informació sobre un esdeveniment per a cada tipus d'oient. Quan es crida un mètode d'oient, una instància d'este esdeveniment es passa al mètode com a paràmetre. Els mètodes d'oient del Basic també poden cridar estos objectes d'esdeveniment, sempre que es passe el paràmetre apropiat a la declaració Sub. Per exemple:

    Sub ContListener_disposing( oEvent )
        MsgBox "disposing"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementInserted( oEvent )
        MsgBox "elementInserit"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementRemoved( oEvent )
        MsgBox "elementSuprimit"
        MsgBox oEvent.Dbg_Properties
    End Sub

    Sub ContListener_elementReplaced( oEvent )
        MsgBox "elementReemplaçat"
        MsgBox oEvent.Dbg_Properties
    End Sub

No heu d'incloure el paràmetre d'un objecte d'esdeveniment si no s'utilitza l'objecte:

    ' Implementació mínima de Sub disposing
    Sub ContListener_disposing
    End Sub

Els mètodes d'oient sempre s'han d'implementar per evitar errors d'execució del Basic.