Ative o JavaScript no navegador para exibir as páginas da Ajuda do LibreOfficeDev.

Função CreateUnoListener

Cria uma instância Listener.

Muitos objetos Uno permitem registrar listeners com interfaces de listeners dedicadas. Isso permite ouvir eventos específicos e chamar o método listener apropriado. A função CreateUnoListener define uma interface listener associada a um objeto UNO. A interface do listener é então vinculada ao seu objeto associado.

Sintaxe:


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

Parâmetros:

Prefixo: Um prefixo de texto usado em sub-rotinas BASIC que lidam com eventos.

Typename: Um nome de interface de ouvinte UNO totalmente qualificado.

Valor de retorno:

O serviço UNO correspondente ao nome da interface do listener Typename, valor Null caso contrário.

Exemplo:

O exemplo a seguir escuta os eventos que ocorrem para um objeto de 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 com detalhes abaixo. O segundo parâmetro Typename é o nome totalmente qualificado da interface do listener.

Cada listener deve estar registrado no recurso de difusão do LibreOfficeDev. Isso é feito ligando cada listener ao seu objeto associado. Os métodos de ligação sempre seguem o padrão 'adicionarFooListener', onde 'Foo' é o tipo de objeto da interface do ouvinte, sem o 'X'. Neste exemplo, o método addContainerListener é chamado para registrar o XContainerListener:


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

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

As sub-rotinas BASIC registradas e orientadas a eventos requerem o uso de um Prefixo definido. O sistema de tempo de execução do BASIC procura por sub-rotinas ou funções que tenham o nome 'Prefix+ListenerMethod' e as chama quando encontradas. Caso contrário, ocorrerá 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

disposing

com.sun.star.lang.XEventListener interface base para todas as interfaces ouvintes

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


'ContListener_' usado neste exemplo implica que as seguintes sub-rotinas devem ser implementadas em BASIC:

Cada interface ouvinte define um conjunto de nomes de eventos controlados associados a objetos Uno. Quando ocorre um evento, ele é enviado ao método como um parâmetro. Métodos de eventos BASIC também podem chamar uns aos outros, enquanto que o parâmetro apropriado seja passado 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 não usado:


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

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


tip

Use o console da biblioteca ScriptForge quando a IDE do BASIC não estiver facilmente acessível, ou seja, durante o processamento de eventos. Use o método DebugPrint para adicionar qualquer informação relevante ao console. As entradas do console podem ser despejadas em um arquivo de texto ou visualizadas em uma janela de diálogo. Use o módulo Trace da biblioteca Access2Base como uma 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