Modulo
Contenuto
Indice 🔎︎

# Funzione CreateUnoListener

Crea un'istanza del Listener.

Molte interfacce Uno permettono di registrare un listener su un'interfaccia speciale. In questo modo, potete abilitare la ricezione di determinati eventi e richiamare il metodo di ricezione appropriato. La funzione CreateUnoListener attende l'interfaccia listener chiamata e quindi le passa un oggetto supportato da quell'interfaccia. L'oggetto viene quindi passato al metodo per la registrazione del listener.

## Sintassi:

    oListener = CreateUnoListener( Prefisso, NomeInterfacciaListener )

## Esempio:

L'esempio seguente fa riferimento a un oggetto di una libreria Basic.

    Dim oListener

    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 è il nome pienamente qualificato dell'interfaccia Listener da utilizzare.

Il Listener deve quindi essere aggiunto all'oggetto trasmittente. A tale scopo, chiamate il metodo appropriato per l'aggiunta di un Listener. I metodi disponibili seguono sempre il modello "aggiungiNomeListener", dove "Nome" è il tipo di interfaccia del Listener senza la 'X'. In questo esempio viene chiamato il metodo addContainerListener per la registrazione del listener XContainerListener:

    Dim oLib

    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 corrispondente chiama il metodo appropriato dall'interfaccia com.sun.star.container.XContainerListener.

Il prefisso chiama i Listener registrati da una subroutine in Basic. Il sistema di runtime di Basic ricerca le subroutine o le funzioni Basic che contengono il nome "PrefixListenerMethode" e quindi le chiama. Diversamente, si verifica un errore di runtime.

In questo esempio, l'interfaccia del Listener utilizza i seguenti metodi:

- disposing:

- Interfaccia base del Listener (com.sun.star.lang.XEventListener): interfaccia base per tutte le interfacce dei 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

In questo esempio, il prefisso è ContListener_. Occorre perciò che vengano implementate in Basic le seguenti subroutine:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Per ogni tipo di Listener esiste un tipo di struttura contenente informazioni su un determinato evento. Quando viene chiamato un metodo Listener, un'istanza di questo evento viene passata al metodo come parametro. I metodi base dei Listener possono chiamare anche questi oggetti degli eventi, purché nella dichiarazione Sub venga passato il parametro appropriato. Ad esempio:

    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

Se un oggetto dell'evento non viene utilizzato, non è necessario che includiate il parametro di quell'oggetto:

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