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.