Conteúdo

# Função CreateUnoListener

Cria uma instância de Ouvinte.

Muitos objetos Uno permitem registar ouvintes através de interfaces de ouvinte específicas. Isto permite monitorizar eventos específicos e invocar o método de ouvinte adequado. A função CreateUnoListener define uma interface de ouvinte associada a um objeto UNO. A interface de ouvinte é, em seguida, ligada ao objeto a que está associada.

### Sintaxe:

        CreateUnoListener( Prefix As String, Typename As String) As Object

### Parâmetros:

Nome | Tipo | Descrição
--- | --- | ---
Prefixo | String | Um prefixo de texto utilizado nas sub-rotinas BASIC que tratam de eventos.
Nome do modelo | String | Um nome de interface de ouvinte UNO totalmente qualificado.

### Tipo de retorno:

Objeto. O serviço UNO correspondente ao nome da interface de ouvinte Typename; caso contrário, o valor Null.

### Exemplo:

O exemplo seguinte monitoriza os eventos que ocorrem num objeto da biblioteca BASIC.

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

O método CreateUnoListener requer dois parâmetros. O primeiro é Prefix e é explicado em pormenor abaixo. O segundo parâmetro, Typename, é o nome totalmente qualificado da interface do ouvinte.

Cada ouvinte deve estar registado na funcionalidade de transmissão LibreOffice. Isto é feito através da ligação de cada ouvinte ao seu objeto associado. Os métodos de ligação seguem sempre o padrão «addFooListener», em que «Foo» é o tipo de objeto da interface do ouvinte, sem o «X». Neste exemplo, o método addContainerListener é chamado para registar o XContainerListener:

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

O ouvinte já está registado. Quando ocorre um evento, o ouvinte ativo chama o método adequado definido na interface com.sun.star.container.XContainerListener.

As sub-rotinas BASIC registadas e orientadas por eventos exigem a utilização de um Prefixo definido. O sistema de tempo de execução do BASIC procura sub-rotinas ou funções com o nome «Prefixo+MétodoDoOuvinte» e chama-as quando as encontra. Caso contrário, ocorre um erro de tempo de execução.

Neste exemplo, a interface com.sun.star.container.XContainerListener define os seguintes métodos:

método | descrição
--- | ---
eliminação | com.sun.star.lang.XEventListener interface base para todas as interfaces de ouvinte
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

O uso de «ContListener_» neste exemplo implica que as seguintes sub-rotinas devem ser implementadas em BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Cada interface de ouvinte define um conjunto de nomes de eventos controlados associados a objetos Uno. Quando ocorre um evento, este é enviado para o método como parâmetro. Os métodos de eventos BASIC também podem chamar-se uns aos outros, desde que seja passado o parâmetro adequado na declaração Sub. Por exemplo:

    Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
        MsgBox "disposing"
    End Sub

    Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox oEvent.Source.' "elementInserted"
    End Sub

    Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementRemoved"
    End Sub

    Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementReplaced"
    End Sub

Não é necessário incluir o parâmetro do objeto de evento quando este não for utilizado:

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

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

Utilize a biblioteca ScriptForge quando o IDE do BASIC não estiver facilmente acessível, ou seja, durante o processamento de eventos. Utilize o método DebugPrint para adicionar qualquer informação relevante à consola. As entradas da consola podem ser exportadas para um ficheiro de texto ou visualizadas numa janela de diálogo. Utilize o módulo Trace da biblioteca Access2Base como alternativa

       Sub SF_Trace
          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          svc = CreateScriptService("ScriptForge.Exception")
          svc.Console modal:=False
          svc.DebugPrint("Lorem", "Ipsum", "...")
       End Sub ' SF_Trace

       Sub A2B_Trace
          GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
          Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
          Access2Base.Trace.TraceConsole()
       End Sub ' A2B_Trace

Tópicos relacionados

Criar ouvintes de evento

Mapeamento de eventos para objetos

Ver também Eventos de documentos, Eventos de formulários.

Criar uma manipulador de caixas de diálogo

A escutar eventos do documento

Objetos, funções e serviços do UNO

Necessitamos da sua ajuda!