IBM Lotus Symphony
|
Oppretter en lytterforekomst.
Mange Uno-grensesnitt lar deg registrere lyttere på et spesielt lyttergrensesnitt. Dermed kan du lytte etter bestemte hendelser og kalle opp riktig lyttermetode. CreateUnoListener-funksjonen venter på det oppkalte lyttergrensesnittet og sender grensesnittet et objekt som grensesnittet støtter. Dette objektet sendes så til metoden for å registrere lytteren.
oListener = CreateUnoListener( prefiksnavn, lyttergrensesnittnavn )
Følgende eksempel er basert på et Basic-bibliotekobjekt:
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
CreateUnoListener-metoden krever to parametere. Den første er et prefiks som er forklart i detalj nedenfor. Den andre parameteren er fullstendig navn på lyttergrensesnittet som du ønsker å bruke.
Lytteren må så legges til i kringkastingsobjektet. Dette gjøres ved å kalle opp riktig metode for tilføyelse av lytter. Disse metodene følger alltid mønsteret "addFooListener", der "Foo" er lyttergrensesnittypen, uten 'X'. I dette eksempelet kalles addContainerListener-metoden opp for å registrere XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 må finnes!
oLib.addContainerListener( oListener ) ' Registrer lytteren
Lytteren er nå registrert. Når en hendelse inntreffer, kaller tilsvarende lytter opp riktig metode fra com.sun.star.container.XContainerListener-grensesnittet.
Prefikset kaller opp registrerte lyttere fra Basic-subrutiner. Basics kjøretidssystem søker etter Basic-subrutiner eller -funksjoner som har navnet "PrefixListenerMethode" og kaller dem opp når de blir funnet. Ellers oppstår en kjøretidsfeil.
I dette eksempelet bruker lyttergrensesnittet følgende metoder:
disposing:
Lytterens grunngrensesnitt (com.sun.star.lang.XEventListener): grunngrensesnitt for alle lyttergrensesnitt
elementInserted:
Metode for grensesnittet com.sun.star.container.XContainerListener
elementRemoved:
Metode for grensesnittet com.sun.star.container.XContainerListener
elementReplaced:
Metode for grensesnittet com.sun.star.container.XContainerListener
I dette eksempelet er prefikset ContListener_. Følgende subrutiner må derfor implementeres i Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
Det finnes en strukturtype for hendelse som inneholder informasjon om en hendelse, for hver lyttertype. Når en lyttermetode kalles opp, sendes en forekomst av denne hendelsen til metoden som parameter. Basic-lyttermetoder kan også kalles opp disse hendelsesobjektene, så lenge riktig parameter sendes i Sub-deklarasjonen. 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 må ikke ta med parameteren i et hendelsesobjekt hvis objektet ikke blir brukt:
' Minimal implementering av Sub disposing
Sub ContListener_disposing
End Sub
![]() |
Lyttermetoder må alltid implementeres for å unngå Basic-kjøretidsfeil. |