Contenido
Índice 🔎︎

# Función CreateUnoListener

Crea una instancia de Listener.

Muchas interfaces de Uno permiten registrar receptores en una interfaz especial, lo que permite detectar sucesos específicos y llamar al método receptor más apropiado. La función CreateUnoListener espera a la interfaz receptora llamada y después le transmite un objeto que esta admita. El objeto se transmite posteriormente al método para registrar el receptor.

## Sintaxis:

    oListener = CreateUnoListener( Nombreprefijo, NombreInterfazListener )

## Ejemplo:

El ejemplo siguiente se basa en un objeto de la biblioteca Basic.

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

El método CreateUnoListener requiere dos parámetros. El primero es un prefijo y se explica detalladamente a continuación; el segundo es el nombre totalmente cualificado de la interfaz Listener que se desee usar.

A continuación, el Listener debe añadirse al objeto Broadcaster lo que se consigue llamando al método apropiado para agregar un Listener. Estos métodos siempre siguen el patrón "addFooListener", donde "Foo" es el tipo de interfaz Listener sin la 'X'. En este ejemplo, el método addContainerListener se llama para registrar XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 debe existir
    oLib.addContainerListener( oListener ) ' Registrar el listener

Ahora Listener está registrado. Cuando se produce una acción, el Listener correspondiente llama al método apropiado desde la interfaz de com.sun.star.container.XContainerListener.

El prefijo llama a Listeners registrados desde subrutinas Basic. El sistema en tiempo de ejecución de Basic busca subrutinas o funciones Basic que tengan el nombre "PrefixListenerMethode" y las llama cuando las encuentra. En caso contrario se produce un error de tiempo de ejecución.

En este ejemplo, la interfaz Listener usa los métodos siguientes:

- disposing:

- Interfaz base de Listener (com.sun.star.lang.XEventListener): intefaz base para todos las intefaces de Listener

- elementInserted:

- Método de la interfaz com.sun.star.container.XContainerListener

- elementRemoved:

- Método de la interfaz com.sun.star.container.XContainerListener

- elementReplaced:

- Método de la interfaz com.sun.star.container.XContainerListener

En este ejemplo, el prefijo es ContListener_. Por tanto, las subrutinas siguientes deben implementarse en Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Existe un tipo de estructura de acción que contiene información sobre cada tipo de Listener. Cuando se llama a un método Listener, se pasa una instancia de esta acción al método como parámetro. Los métodos Listener de Basic también pueden llamar a estos objetos de evento, siempre que se pase el parámetro apropiado en la declaración Sub. Por ejemplo:

    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 es necesario incluir el parámetro de un objeto de acción si este no se va a utilizar:

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

Los métodos Listener deben implementarse siempre para evitar errores en tiempo de ejecución de Basic.