Módulo
Conteúdo
Índice 🔎︎

# Função CreateUnoListener

Cria uma instância Listener.

A maioria das interfaces Uno permite que você registre escutas em uma interface de escuta especial. Isso permite que você ouça eventos específicos e chame o método de escuta apropriado. A função CreateUnoListener aguarda a interface de escuta e, em seguida, passa a ela um objeto que ela suporte. Esse objeto depois é passado ao método, para registrar a escuta.

## Sintaxe:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Exemplo:

O exemplo a seguir é baseado em um objeto de biblioteca do Basic.

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

O método CreateUnoListener requer dois parâmetros. O primeiro consiste em um prefixo, que é explicado detalhadamente a seguir. O segundo parâmetro é o nome totalmente qualificado da interface Listener que você deseja usar.

A Listener deverá então ser adicionada ao objeto Broadcaster. Isso é feito chamando-se o método apropriado para adicionar uma Listener. Esses métodos seguem sempre o padrão "addFooListener", onde "Foo" é o tipo da interface Listener sem o 'X'. Neste exemplo, o método addContainerListener é chamado para registrar o XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 deve existir!
    oLib.addContainerListener( oListener ) ' Registrar a Listener

A Listener agora está registrada. Quando ocorrer um evento, a Listener correspondente chamará o método apropriado na interface com.sun.star.container.XContainerListener.

O prefixo chama as Listeners registradas a partir das sub-rotinas do Basic. O sistema em tempo de execução do Basic procura por sub-rotinas ou funções do Basic que possuam o nome "PrefixListenerMethode" e as chama quando as encontra. Do contrário, ocorre um erro em tempo de execução.

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

- disposing:

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

- elementInserted:

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

- elementRemoved:

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

- elementReplaced:

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

Neste exemplo, o prefixo é ContListener_. Desse modo, é necessário implementar as seguintes sub-rotinas no Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Um tipo de estrutura de eventos que contém informações sobre eventos que existem em todos os tipos de Listener. Quando um método Listener é chamado, uma instância desse evento é passada para o método como um parâmetro. Os métodos Listener do Basic também podem chamar esses objetos de evento, desde que o parâmetro apropriado seja passado na declaração 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

Não é necessário incluir o parâmetro de um objeto de evento se o objeto não for usado:

    ' Implementação mínima de Sub disposing
    Sub ContListener_disposing
    End Sub

Para evitar erros de tempo de execução do Basic, os métodos de ouvinte devem ser implementados sempre.