Conteúdo
Índice 🔎︎

# Função CreateUnoListener

Cria uma instância de Ouvinte.

Muitas interfaces Uno permitem o registo de ouvintes numa interface especial para ouvintes. Isto permite ouvir eventos específicos e definir o método de escuta apropriado. A função CreateUnoListener espera pela interface de escuta chamada e, então, transfere para a interface um objeto que esta permita. Este objeto é, então, transferido para o método para registar o ouvinte.

### Sintaxe:

oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

### Exemplo:

O seguinte exemplo baseia-se num objeto da biblioteca do Basic.

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

O método CreateUnoListener requer dois parâmetros. O primeiro é um prefixo e é explicado em detalhe mais abaixo. O segundo parâmetro é o nome totalmente qualificado da interface do ouvinte que pretende utilizar.

O ouvinte terá, então, de ser adicionado ao objeto emissor. Este processo é efetuado através do método apropriado para adicionar um Ouvinte. Estes métodos seguem sempre o padrão "addFooListener", no qual "Foo" é o tipo de interface do Ouvinte, sem o 'X'. Neste exemplo, o método addContainerListener é chamado para registar o XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 deve existir!
    oLib.addContainerListener( oListener ) ' Registar o ouvinte

O ouvinte está agora registado. Quando ocorre um evento, o Ouvinte correspondente chama o método apropriado a partir da interface com.sun.star.container.XContainerListener.

O prefixo chama Ouvintes registados a partir de sub-rotina em Basic. O sistema de tempo de execução do Basic procura sub-rotina ou funções do Basic que tenham o nome "PrefixListenerMethode" e chama-as quando as encontra. Caso contrário, ocorre um erro em tempo de execução.

Neste exemplo, a interface do ouvinte utiliza 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_. Assim, as seguintes sub-rotinas terão de ser implementadas no Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Um tipo de estrutura de eventos que contém informações sobre um evento para cada tipo de Ouvinte. Quando é chamado um método de Ouvinte, é transferida uma instância-objeto deste evento para o método como um parâmetro. Os métodos do Ouvinte do Basic também podem chamar estes objetos de evento, desde que o parâmetro adequado seja transferido 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 utilizado:

    ' Implementação mínima da eliminação da Sub
    Sub ContListener_disposing
    End Sub

Os métodos do ouvinte devem estar sempre implementados para evitar erros em tempo de execução no Basic.