Módulo
Contido
Índice 🔎︎

# CreateUnoListener Function

Crea unha instancia Listener.

A maioría das interfaces Uno permiten rexistrar listeners nunha interface especial, o que fai posíbel a supervisión de eventos específicos e a activación do método listener adecuado. A función CreateUnoListener agarda pola interface listener e, a seguir, pásalle un obxecto para o que teña soporte. Este obxecto pásase despois ao método para rexistrar o listener.

## Sintaxe:

    oListener = CreateUnoListener( NomePrefixo, NomeInterfaceListener )

## Exemplo:

O seguinte exemplo baséase nun obxecto da biblioteca de Basic.

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

O método CreateUnoListener require dous parámetros. O primeiro é un prefixo, explicado a continuación máis detalladamente. O segundo é o nome cualificado por completo da interface Listener que desexe utilizar.

O Listener debe engadirse ao obxecto Broadcaster chamando ao método adecuado. Estes métodos seguen sempre o patrón "addFooListener", onde "Foo" é o tipo da interface Listener sen o «X». Neste exemplo, chámase ao método addContainerListener para rexistrar o XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 ten que existir!
    oLib.addContainerListener( oListener ) ' Rexistrar o Listener

Agora o Listener está rexistrado. Ao producirse un evento, o Listener correspondente activa o método adecuado desde a interface com.sun.star.container.XContainerListener.

O prefixo activa os Listeners rexistrados desde os métodos de Basic. O sistema en tempo de execución de Basic busca métodos ou funcións de Basic que posúan o nome "PrefixListenerMethode" e actívaas cando as encontra. No caso contrario, prodúcese un erro en tempo de execución.

Neste exemplo, a interface Listener usa os seguintes métodos:

- disposing:

- Interface base de Listener (com.sun.star.lang.XEventListener): Interface base para todas as interfaces Listener

- elementInserted:

- Método da interface de com.sun.star.container.XContainerListener

- elementRemoved:

- Método da interface de com.sun.star.container.XContainerListener

- elementReplaced:

- Método da interface de com.sun.star.container.XContainerListener

Neste exemplo, o prefixo é ContListener_. Por tanto, os métodos que deben implementarse en Basic son os seguintes:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Existe un tipo de estrutura de eventos que contén información sobre cada tipo de Listener. Cando se chama a un método Listener, pásase ao método unha instancia dese evento como parámetro. Os métodos Listener de Basic tamén poden activar eses obxectos de evento sempre que se pase o parámetro adecuado na declaración Sub. Por exemplo:

    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

Non é necesario incluír o parámetro dun obxecto de evento, se o obxecto non se utiliza:

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

Listener methods must always be implemented to avoid Basic run-time errors.