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:

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
warning

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


tip

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

Help ons, alstublieft!