CreateUnoListener Function
Cria uma instância Listener.
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.