CreateUnoListener-functie
Maakt een Listener-exemplaar.
Bij vele Uno-interfaces kunt u listeners op een speciale listener-interface registreren. Zo kunt u naar specifieke gebeurtenissen luisteren en de toepasselijke listener-methode aanroepen. De CreateUnoListener-functie wacht op de aangeroepen listener-interface en geeft de interface dan een object door dat door de interface ondersteund wordt. Dit object wordt vervolgens doorgegeven aan de methode om de listener te registreren.
Syntaxis:
oListener = CreateUnoListener( Voorvoegselnaam, ListenerInterfacenaam )
Voorbeeld:
Het volgende voorbeeld is op een Basic-bibliotheekobject gebaseerd:
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Er zijn twee parameters vereist voor de CreateUnoListener-methode. De eerste is een voorvoegsel dat hieronder gedetailleerd wordt uitgelegd. De tweede is de volledige naam van de Listener-interface die u wilt gebruiken.
De Listener moet vervolgens aan het Broadcaster-object toegevoegd worden. U doet dit door de toepasselijke methode voor het toevoegen van een Listener op te roepen. Deze methodes volgen altijd het patroon addFooListener, waarbij 'Foo' het Listener-interfacetype is, zonder de 'X'. In dit voorbeeld wordt de addContainerListener-methode aangeroepen om de XContainerListener te registreren:
Dim oLib
oLib = BasicLibraries.Bibliotheek1 ' Bibliotheek1 moet bestaan!
oLib.addContainerListener( oListener ) ' Registreer de Listener
De Listener is nu geregistreerd. Wanneer zich een gebeurtenis voordoet, roept de overeenkomstige Listener de toepasselijke methode uit de com.sun.star.container.XContainerListener-interface op.
Het voorvoegsel roept geregistreerde Listeners uit BASIC-subroutines op. Het BASIC-runtimesysteem zoekt naar BASIC-subroutines of -functies met de naam "VoorvoegselListenerMethode" en roept ze op wanneer ze gevonden worden. Zo niet, dan treedt er een runtime-fout op.
In dit voorbeeld gebruikt de Listener-interface de volgende methodes:
-
disposing:
-
Listener-basisinterface (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
In dit voorbeeld is het voorvoegsel ContListener_. De volgende subroutines moeten daarom in Basic geïmplementeerd worden:
-
ContListener_disposing
-
ContListener_elementInserted
-
ContListener_elementRemoved
-
ContListener_elementReplaced
Er is een gebeurtenisstructuurtype met informatie over een gebeurtenis voor elk Listener-type. Wanneer een Listener-methode wordt aangeroepen, wordt een exemplaar van deze gebeurtenis als parameter aan de methode doorgegeven. Listener-methodes van Basic kunnen deze gebeurtenisobjecten ook aanroepen, mits de toepasselijke parameter in de Sub-declaratie wordt doorgegeven. Voorbeeld:
Sub ContListener_disposing( oEvent )
MsgBox "beëindigen"
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
U hoeft de parameter van een gebeurtenisobject niet op te nemen als het object niet wordt gebruikt:
' Minimale implementatie van Sub disposing
Sub ContListener_disposing
End Sub
Listener-methodes moeten altijd geïmplementeerd worden om Basic-runtimefouten te vermijden.