LibreOffice 7.4 Hjälp
Skapar en lyssnarinstans.
Många Uno-gränssnitt låter dig registrera lyssnare på speciella lyssnargränssnitt. På detta sätt kan du lyssna efter specifika händelser och anropa lämpliga lyssnarmetoder. Funktionen CreateUnoListener väntar på det anropade lyssnargränssnittet och skickar sedan ett objekt till gränssnittet som gränssnittet stöder. Detta objekt skickas sedan till metoden för att registrera lyssnaren.
oListener = CreateUnoListener( Prefixnamn, Lyssnargränssnittsnamn )
Följande exempel baseras på ett Basic-biblioteksobjekt.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Metoden CreateUnoListener kräver två parametrar. Den första är ett prefix och förklaras utförligt nedan. Den andra parametern är det fullständiga namnet för lyssnargränssnittet som du vill använda.
Lyssnaren måste sedan läggas till i Broadcaster-objektet. Detta åstadkoms genom att lämplig metod för tillägg av en lyssnare anropas. Metoderna följer alltid mönstret "addFooListener", där "Foo" är lyssnargränssnittstypen utan 'X'. I det här exemplet anropas metoden addContainerListener för att registrera XContainerListener:
Dim oLib
oLib = BasicLibraries.Bibliotek1 ' Bibliotek1 måste finnas!
oLib.addContainerListener( oListener ) ' Registrera lyssnaren
Lyssnaren är nu registrerad. När en händelse inträffar anropar motsvarande lyssnare lämplig metod från gränssnittet com.sun.star.container.XContainerListener.
Prefixet anropar registrerade lyssnare från Basic-subrutiner. Basic-runtimesystemet söker efter Basic-subrutiner eller funktioner som har namnet "PrefixListenerMethode" och anropar dem när de hittas. Annars inträffar ett runtime-fel.
I det här exemplet använder lyssnargränssnittet följande metoder:
disposing:
basgränssnitt för lyssnare (com.sun.star.lang.XEventListener): basgränssnitt för alla lyssnargränssnitt
elementInserted:
Metod för gränssnittet com.sun.star.container.XContainerListener
elementRemoved:
Metod för gränssnittet com.sun.star.container.XContainerListener
elementReplaced:
Metod för gränssnittet com.sun.star.container.XContainerListener
I det här exemplet är prefixet ContListener_. Följande subrutiner måste därför implementeras i Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
En händelsestruktur som innehåller information om en händelse finns för varje lyssnartyp. När en lyssnarmetod anropas skickas en instans av den här händelsen till metoden som en parameter. Basic-lyssnarmetoder kan också anropa de här händelseobjekten så länge som lämpliga parametrar skickas i Sub-deklarationen. Till exempel:
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
Du behöver inte inkludera parametern för ett händelseobjekt om det inte används:
' Minimal implementering av Sub-disponering
Sub ContListener_disposing
End Sub
Lyssnarmetoder måste alltid implementeras för att undvika Basic runtime-fel.