Contenuto

# 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:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

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

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

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

Argomenti correlati

Creazione di listener di eventi

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).

Ascolto degli eventi del documento