Contingut
Índex 🔎︎

# Funció CreateUnoListener

Crea una instància d'oient.

Moltes interfícies d'Uno us permeten registrar oients en una interfície d'oient especial. Això us 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. Aquest 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'afegeix a l'objecte de difusió. Això es du a terme cridant el mètode apropiat per afegir un oient. Aquests mètodes sempre segueixen el patró "addFooListener", en què "Foo" és el tipus d'interfície d'oient, sense la 'X'. En aquest 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 cerca 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 aquest 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 aquest 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'aquest esdeveniment es passa al mètode com a paràmetre. Els mètodes d'oient del Basic també poden cridar aquests objectes d'esdeveniment, sempre que es passi 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 "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

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.