CreateUnoListener-funksjonen
Lagar ein lyttarinstans
Mange Uno-grensesnitt let deg registrera lyttarar på spesielle lyttargrensesnitt. På denne måten kan du lytta etter bestemte hendingar og kalla opp den passande lyttemetoden. Funksjonen CreateUnoListener ventar på det oppkalla lyttargrensesnittet og fører deretter over eit objekt til grensesnittet som grensesnittet har støtte for. Dette objektet vert sidan overført til metoden for å registrera lyttaren.
Syntaks:
oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )
Eksempel:
Dette eksemplet er basert på eit Basic bibliotekobjekt.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Metoden CreateUnoListener krev to parameter. Den første er eit prefiks og er forklart i detaljar nedanfor. Den andre parameteren er det fullstendige namnet på lytte-grensesnittet som du vil bruka.
Lyttaren må deretter leggjast til i Broadcaster-objektet. Dette vert gjort ved å kalla opp den passande metoden for å leggja til ein lyttar. Denne metoden følgjer alltid mønsteret "addFooListener" der "Foo" er lyttargrensesnitttypen utan 'X'. I dette eksemplet vert metoden addContainerListener kalla op for å registrera XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 må finnast.
oLib.addContainerListener( oListener ) ' Register lyttaren
Lyttaren er nå registrert. Når det skjer ei hending, vil den tilsvarande lyttaren kalla opp den passande metoden frå com.sun.star.container.XContainerListener Interface.
Prefikset kallar opp registrerte lyttarar frå Basic-subrutiner. Basic køyretidssytemet søkjer etter Basic subrutiner eller funksjonar med namnet "PrefixListenerMethode" og kallar dei opp når dei vert funne. Elles oppstår det ein køyretidsfeil.
I dette eksemplet brukar lyttar-grensesnittet desse metodane:
-
disposing:
-
Basegrensesnittet for lyttarar (com.sun.star.lang.XEventListener): basegrensesnitt for alle lyttar-grensesnitt
-
elementInserted:
-
Metode for com.sun.star.container.XContainerListener grensesnittet
-
elementRemoved:
-
Metode for com.sun.star.container.XContainerListener grensesnittet
-
elementReplaced:
-
Metode for com.sun.star.container.XContainerListener grensesnittet
I dette eksemplet er prefikset ContListener_. Desse subrutinene må difor vera implementerte i Basic:
-
ContListener_disposing
-
ContListener_elementInserted
-
ContListener_elementRemoved
-
ContListener_elementReplaced
Ein hendingsstrukturtype som inneheld informasjon om ei hending finst for kvar lyttar-type. Når ein lyttar-metode vert kalla opp, vert ei førekomst av denne hendinga overført til metoden som parameter. Basic-lyttarmetodar kan også kalla opp desse hendingsobjekta så lenge høvelege parameter vert overførte i del-deklarasjonen. For eksempel:
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 treng ikkje ta med parameteren for eit hendingsobjekt viss objektet ikkje er brukt:
' Minimal implementering av Sub-disposing
Sub ContListener_disposing
End Sub
Lyttarmetodar må alltid implementerast for å unngå Basic køyretidsfeil.