Funzione CreateUnoListener

Crea un'istanza del Listener.

Molti oggetti Uno consentono di registrare dei listener con delle interfacce d'ascolto dedicate. Questo permette di intercettare specifici eventi e chiamare il metodo appropriato del listener. La funzione CreateUnoListener imposta un'interfaccia per il listener associata a un oggetto UNO. L'interfaccia del listener viene poi collegata all'oggetto ad essa associato.

Sintassi:


    CreateUnoListener( Prefix As String, Typename As String) As Object

Parametri:

Prefix: un prefisso testuale usato nelle subroutine di BASIC che gestiscono gli eventi.

Typename: un nome UNO valido per l'interfaccia del listener.

Valore restituito:

Il servizio UNO corrispondente al nome dell'interfaccia listener Typename, altrimenti il valore Null.

Esempio:

Il seguente esempio ascolta gli eventi che si verificano per un oggetto di libreria BASIC.


Dim oListener As Object
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

Il metodo CreateUnoListener richiede due parametri. Il primo è un prefisso ed è spiegato dettagliatamente più avanti. Il secondo parametro Typename è il nome pienamente qualificato dell'interfaccia listener da utilizzare.

Ogni listener deve essere registrato alla funzionalità broadcaster di LibreOffice. Questo si ottiene collegando ogni listener all'oggetto ad esso associato. I metodi di collegamento seguono sempre lo schema 'addFooListener', dove 'Foo' è il tipo di oggetto dell'interfaccia listener, senza la 'X'. In questo esempio, il metodo addContainerListener viene chiamato per registrare XContainerListener:


Dim oLib As Object
oLib = BasicLibraries.Libreria1 ' Libreria1 deve essere già esistente!
oLib.addContainerListener( oListener ) ' Registra il listener

Il listener è ora registrato. Quando si verifica un evento, il listener attivo chiama il metodo appropriato definito nell'interfaccia com.sun.star.container.XContainerListener.

Le subroutine guidate dagli eventi registrate in BASIC richiedono l'uso di un determinato prefisso (Prefix). Il sistema di esecuzione di BASIC cerca le subroutine o le funzioni che hanno il nome 'Prefix+ListenerMethod' e le esegue quando le trova. Altrimenti si verifica un errore del tempo di esecuzione (run-time).

In questo esempio l'interfaccia com.sun.star.container.XContainerListener definisce i seguenti metodi:

metodo

descrizione

disposing

Interfaccia di base com.sun.star.lang.XEventListener per tutte le interfacce listener

elementInserted

Metodo dell'interfaccia com.sun.star.container.XContainerListener

elementRemoved

Metodo dell'interfaccia com.sun.star.container.XContainerListener

elementReplaced

Metodo dell'interfaccia com.sun.star.container.XContainerListener


'ContListener_' usato in questo esempio implica che devono essere implementate in BASIC le seguenti subroutine:

Ogni interfaccia listener definisce un insieme di nomi di eventi controllati associato a degli oggetti Uno. Quando si verifica un evento, questo viene inviato al metodo come parametro. I metodi degli eventi di BASIC possono anche chiamarsi l'un l'altro, purché il parametro appropriato sia passato nella dichiarazione della Sub. Per esempio:


Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
    MsgBox "disposing"
End Sub
 
Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox oEvent.Source.' "elementInserted"
End Sub
 
Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementRemoved"
End Sub
 
Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
    MsgBox "elementReplaced"
End Sub

Non è necessario includere il parametro oggetto dell'evento, se non usato:


' Implementazione minima di Sub disposing
Sub ContListener_disposing
End Sub
warning

I metodi dei Listener devono sempre essere implementati per evitare errori di runtime di BASIC.


tip

Usare la console della libreria ScriptForge quando l'IDE di BASIC non è facilmente accessibile, cioè durante l'elaborazione degli eventi. Usare il metodo DebugPrint per aggiungere qualsiasi informazione di rilievo alla console. Le voci della console possono essere scaricate in un file di testo o visualizzate in una finestra di dialogo. Come alternativa è possibile usare il modulo Trace della libreria Access2Base.



   Sub SF_Trace
      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      svc = CreateScriptService("ScriptForge.Exception")
      svc.Console modal:=False
      svc.DebugPrint("Lorem", "Ipsum", "...")
   End Sub ' SF_Trace
   
   Sub A2B_Trace
      GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
      Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
      Access2Base.Trace.TraceConsole()
   End Sub ' A2B_Trace

Mappatura di eventi agli oggetti

Vedere anche Eventi del documento, Eventi del formulario.

D'oh! You found a bug (text/sbasic/python/python_handler.xhp#pythonhandler_h1 not found).

Sosteneteci!