IBM Lotus Symphony
|
Crea un caso de Listener.
Muchas interfaces Uno permiten registrar listeners en una interfaz especial. Esto le permite supervisar eventos específicos y llamar al método listener apropiado. La función CreateUnoListener espera a la interfaz listener llamada y después le pasa un objeto que ésta admita. Dicho objeto se pasa después al método para registrar el listener.
oListener = CreateUnoListener( Nombreprefijo, NombreInterfazListener )
El ejemplo siguiente se basa en un objeto de la biblioteca Basic.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
El método CreateUnoListener requiere dos parámetros. El primero es un prefijo y se explica detalladamente a continuación. El segundo parámetro es el nombre completo de la interfaz Listener que se desee usar.
A continuación, el Listener debe agregarse al objeto Broadcaster. Esto se lleva a cabo llamando al método apropiado para agregar un Listener. Estos métodos siempre siguen el patrón "addFooListener", donde "Foo" es el tipo de interfaz Listener sin la 'X'. En este ejemplo, el método addContainerListener se llama para registrar XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 debe existir
oLib.addContainerListener( oListener ) ' Registrar el listener
Ahora Listener está registrado. Cuando se produce un evento, la Listener correspondiente llama al método apropiado desde la interfaz de com.sun.star.container.XContainerListener.
El prefijo llama a Listeners registradas desde subrutinas Basic. El sistema en tiempo de ejecución de Basic busca subrutinas o funciones Basic que tengan el nombre "PrefixListenerMethode" y las llama cuando las encuentra. En caso contrario, se produce un error de tiempo de ejecución.
En este ejemplo, la interfaz Listener usa los métodos siguientes:
disposing:
Interfaz base de Listener (com.sun.star.lang.XEventListener): interfaz base para todas las interfaces de Listener
elementInserted:
Método de la interfaz com.sun.star.container.XContainerListener
elementRemoved:
Método de la interfaz com.sun.star.container.XContainerListener
elementReplaced:
Método de la interfaz com.sun.star.container.XContainerListener
En este ejemplo, el prefijo es ContListener_. Por tanto, las subrutinas siguientes deben implementarse en Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Existe un tipo de estructura de evento que contiene información sobre cada tipo de Listener. Cuando se llama a un método Listener, se pasa un caso de este evento al método como parámetro. Los métodos Listener de Basic también pueden llamar a estos objetos de evento, siempre que se pase el parámetro apropiado en la declaración Sub. Por ejemplo:
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
No es necesario incluir el parámetro de un objeto de evento si éste no se va a utilizar:
' Implementación mínima de disposing Sub
Sub ContListener_disposing
End Sub
![]() |
Los métodos Listener deben implementarse siempre para evitar errores de ejecución de Basic. |