Inhoud

# CreateUnoListener-functie

Maakt een Listener-exemplaar.

Met veel Uno-objecten kunt u listeners registreren met speciale listener-interfaces. Dit maakt het mogelijk om naar specifieke gebeurtenissen te luisteren en de juiste luistermethode op te roepen. De functie CreateUnoListener stelt een listener-interface in die is gekoppeld aan een UNO-object. De listener-interface is dan gebonden aan het bijbehorende object.

### Syntaxis:

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

### Parameters:

Prefix: Een tekstvoorvoegsel dat wordt gebruikt in BASIC-subroutines die gebeurtenissen afhandelen.

Typename: Een volledig gekwalificeerde UNO-listenerinterfacenaam.

### Geretourneerde waarde:

De UNO-service die overeenkomt met de Typename listener-interfacenaam, anders Null-waarde.

### Voorbeeld:

In het volgende voorbeeld wordt geluisterd naar gebeurtenissen die plaatsvinden voor een BASIC-bibliotheekobject.

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

De methode CreateUnoListener vereist twee parameters. De eerste is Prefix en wordt hieronder in detail uitgelegd. Typename tweede parameter is de volledig gekwalificeerde naam van de listener-interface.

Elke listener moet geregistreerd zijn bij de LibreOffice uitzendfunctie. Dit wordt uitgevoerd door elke listener te binden aan het bijbehorende object. Bindmethoden volgen altijd het patroon 'addFooListener', waarbij 'Foo' het objecttype is van de listener-interface, zonder de 'X'. In dit voorbeeld is de addContainerListener methode wordt aangeroepen om de XContainerListener te registreren:

    Dim oLib As Object
    oLib = BasicLibraries.Bibliotheek1 ' Bibliotheek1 moet bestaan!
    oLib.addContainerListener( oListener ) ' Registreer de Listener

De listener is nu geregistreerd. Wanneer een gebeurtenis plaatsvindt, roept de actieve listener de juiste methode aan die is gedefinieerd in com.sun. star.container.XContainerListener-interface.

Gebeurtenisgestuurde geregistreerde BASIC-subroutines vereisen een gedefinieerd Prefix. Het BASIC runtime-systeem zoekt naar subroutines of functies die de naam 'Prefix+ListenerMethod' hebben en roept ze op wanneer ze gevonden zijn. Anders treedt er een runtimefout op.

In dit voorbeeld, com.sun.star.container.XContainerListener interface definieert de volgende methoden:

methode | beschrijving
--- | ---
disposing | com.sun.star.lang.XEventListener basisinterface voor alle Listener-interfaces
elementInserted | Methode van de com.sun.star.container.XContainerListener-interface
elementRemoved | Methode van de com.sun.star.container.XContainerListener-interface
elementReplaced | Methode van de com.sun.star.container.XContainerListener-interface

'ContListener_' gebruikt in dit voorbeeld impliceert dat de volgende subroutines geïmplementeerd moeten worden in BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Elke listener-interface definieert een reeks gecontroleerde gebeurtenisnamen die zijn gekoppeld aan Uno-objecten. Wanneer een gebeurtenis optreedt, wordt deze als parameter naar de methode verzonden. BASIC-gebeurtenismethoden kunnen elkaar ook aanroepen, zolang de juiste parameter wordt doorgegeven in de Sub-declaratie. Bijvoorbeeld:

    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

U hoeft de gebeurtenisobjectparameter niet op te nemen wanneer deze niet wordt gebruikt:

    ' Minimale implementatie van Sub disposing
    Sub ContListener_disposing
    End Sub

Listener-methoden moeten altijd worden geïmplementeerd om BASIC-runtimefouten te voorkomen.

Gebruik de ScriptForge-bibliotheekconsole wanneer de BASIC IDE niet gemakkelijk toegankelijk is, dat wil zeggen tijdens gebeurtenissen verwerken. Gebruik de methode DebugPrint om relevante informatie aan de console toe te voegen. Console-items kunnen naar een tekstbestand worden gedumpt of in een dialoogvenster worden gevisualiseerd. Gebruik de Trace-module van de Access2Base-bibliotheek als alternatief

       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

Verwante onderwerpen

Listeners aanmaken

Gebeurtenissen toewijzen aan objecten

Zie ook Document events, Form events.

Een dialog-handler aanmaken

Documentgebeurtenissen monitoren