IBM Lotus Symphony
|
Opretter en lytterforekomst (Listener).
Mange UNO-grænseflader giver mulighed for at registrere lyttere på en særlig lyttergrænseflade. Det gør det muligt at lytte efter bestemte hændelser og kalde den relevante lyttermetode. Funktionen CreateUnoListener venter på den kaldte lyttergrænseflade og overfører derefter et objekt til grænsefladen, som grænsefladen understøtter. Objektet overføres derefter til metoden med henblik på registrering af lytterfunktionen.
oListener = CreateUnoListener( Præfiksnavn, Lyttergrænsefladenavn )
Følgende eksempel er baseret på et Basic-biblioteksobjekt.
Dim oListener
oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )
Metoden CreateUnoListener kræver to parametre. Den første er et præfiks og forklares nærmere nedenfor. Den anden parameter er det fuldstændige navn på den lyttergrænseflade, du vil benytte.
Denne lytter skal derefter føjes til objektet Broadcaster. Det gør du ved at kalde den relevante metode til tilføjelse af en lytter. Disse metoder følger altid mønstret "addFooListener", hvor "Foo" er grænsefladetypen for lytteren uden 'X'. I dette eksempel kaldes metoden addContainerListener for at registrere XContainerListener:
Dim oLib
oLib = BasicLibraries.Library1 ' Library1 skal findes!
oLib.addContainerListener( oListener ) ' Registrér lytteren
Lytteren er nu registreret. Når der opstår en hændelse, kalder den tilhørende lytter den relevante metode fra grænsefladen com.sun.star.container.XContainerListener.
Præfikset kalder registrerede lyttere fra Basic-underrutiner. Basic runtimesystemet søger efter Basic-underrutiner eller -funktioner, som kan have navnet "Præfikslyttermetode", og kalder dem, når de er fundet. I modsat fald opstår der en runtimefejl.
I dette eksempel bruger lyttegrænsefladen følgende metoder:
disposing:
Basisgrænseflade for alle lyttergrænseflader (com.sun.star.lang.XEventListener)
elementInserted:
Metode i com.sun.star.container.XContainerListener
elementRemoved:
Metode i com.sun.star.container.XContainerListener
elementReplaced:
Metode i com.sun.star.container.XContainerListener
I dette eksempel er præfikset ContListener_. Følgende underrutiner skal derfor implementeres i Basic:
ContListener_disposing
ContListener_elementInserted
ContListener_elementRemoved
ContListener_elementReplaced
For hver lyttertype findes en hændelsesstrukturtype, der indeholder oplysninger om en hændelse. Når en lyttermetode kaldes, overføres en forekomst af denne hændelse til metoden som en parameter. Basic-lyttermetoder kan også kalde disse hændelsesobjekter, når den relevante parameter overføres i Sub-erklæringen. 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
Det er ikke nødvendigt at medtage et hændelsesobjekts parameter, hvis objektet ikke benyttes:
' Minimumsimplementering af "Sub disposing"
Sub ContListener_disposing
End Sub
![]() |
For at undgå Basic-runtimefejl skal lyttermetoder altid implementeres. |