CreateUnoListener Function
Crea unha instancia Listener.
A maioría das interfaces Uno permiten rexistrar listeners nunha interface especial, o que fai posíbel a supervisión de eventos específicos e a activación do método listener adecuado. A función CreateUnoListener agarda pola interface listener e, a seguir, pásalle un obxecto para o que teña soporte. Este obxecto pásase despois ao método para rexistrar o listener.
Sintaxe:
oListener = CreateUnoListener( NomePrefixo, NomeInterfaceListener )
Exemplo:
O seguinte exemplo baséase nun obxecto da biblioteca de Basic.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
O método CreateUnoListener require dous parámetros. O primeiro é un prefixo, explicado a continuación máis detalladamente. O segundo é o nome cualificado por completo da interface Listener que desexe utilizar.
O Listener debe engadirse ao obxecto Broadcaster chamando ao método adecuado. Estes métodos seguen sempre o patrón "addFooListener", onde "Foo" é o tipo da interface Listener sen o «X». Neste exemplo, chámase ao método addContainerListener para rexistrar o XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 ten que existir!
oLib.addContainerListener( oListener ) ' Rexistrar o Listener
Agora o Listener está rexistrado. Ao producirse un evento, o Listener correspondente activa o método adecuado desde a interface com.sun.star.container.XContainerListener.
O prefixo activa os Listeners rexistrados desde os métodos de Basic. O sistema en tempo de execución de Basic busca métodos ou funcións de Basic que posúan o nome "PrefixListenerMethode" e actívaas cando as encontra. No caso contrario, prodúcese un erro en tempo de execución.
Neste exemplo, a interface Listener usa os seguintes métodos:
-
disposing:
-
Interface base de Listener (com.sun.star.lang.XEventListener): Interface base para todas as interfaces Listener
-
elementInserted:
-
Método da interface de com.sun.star.container.XContainerListener
-
elementRemoved:
-
Método da interface de com.sun.star.container.XContainerListener
-
elementReplaced:
-
Método da interface de com.sun.star.container.XContainerListener
Neste exemplo, o prefixo é ContListener_. Por tanto, os métodos que deben implementarse en Basic son os seguintes:
-
ContListener_disposing
-
ContListener_elementInserted
-
ContListener_elementRemoved
-
ContListener_elementReplaced
Existe un tipo de estrutura de eventos que contén información sobre cada tipo de Listener. Cando se chama a un método Listener, pásase ao método unha instancia dese evento como parámetro. Os métodos Listener de Basic tamén poden activar eses obxectos de evento sempre que se pase o parámetro adecuado na declaración 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
Non é necesario incluír o parámetro dun obxecto de evento, se o obxecto non se utiliza:
' Implementación mínima de Sub disposing
Sub ContListener_disposing
End Sub
Listener methods must always be implemented to avoid Basic run-time errors.