IBM Lotus Symphony
|
Cria uma ocorrência Atendente.
Muitas interfaces Uno permitem registrar atendentes em uma interface de atendente especial. Isso permite que você atenda eventos específicos e chame o método de atendente apropriado. A função CreateUnoListener aguarda pela interface de atendente chamada e transmite à interface um objeto que ela suporte. Esse objeto é transmitido para o método para registrar o atendente.
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
O exemplo a seguir baseia-se no objeto de biblioteca 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 detalhadamente a seguir. O segundo parâmetro é o nome completo da interface Atendente que você deseja usar.
O Atendente deve ser incluído no Objeto Broadcaster. Isso é feito chamando o método apropriado para incluir um Atendente. Esses métodos sempre seguem o "addFooListener" padrão, em que "Foo" é o Tipo de Interface Atendente, sem o 'X'. Nesse exemplo, o método addContainerListener é chamado para registrar o XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 deve existir!
oLib.addContainerListener( oListener ) ' Registrar o atendente
O Atendente agora está registrado. Quando ocorre um evento, o Atendente correspondente chama o método apropriado da Interfacecom.sun.star.container.XContainerListener.
O prefixo chama os Atendentes registrados das sub-rotinas do Basic. O sistema de tempo de execução do Basic procura as sub-rotinas ou funções do Basic que possuem o nome "PrefixListenerMethode" e chama-os ao localizá-los. Caso contrário, ocorre um erro de tempo de execução.
Nesse exemplo, a Interface Atendente usa os seguintes métodos:
disposing:
Interface base do Atendente (com.sun.star.lang.XEventListener): interface base de todas as Interfaces Atendentes.
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
Nesse exemplo, o prefixo é ContListener_. Portanto, as sub-rotinas a seguir devem ser implementadas no Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Um tipo de estrutura de evento que contém informações sobre um evento existente para cada tipo de Atendente. Quando um método Atendente é chamado, uma ocorrência desse evento é transmitida para o método como um parâmetro. Os métodos de Atendentes do Basic também podem chamar esses objetos de eventos, desde que o parâmetro apropriado seja transmitido 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 da disposição Sub
Sub ContListener_disposing
End Sub
![]() |
Os métodos do listener sempre devem ser implementados para evitar erros de tempo de execução do Basic. |