Module
Enhavo
Indekso 🔎︎

# CreateUnoListener Function

Kreas ekzempleron de Listener (aŭskultanto)

Multaj Uno-interfacoj ebligas registri aŭskultantojn je speciala aŭskultanta interfaco. Tio ebligas aŭskulti por specifaj eventoj kaj voki taŭgan aŭskultantan metodon. La funkcio CreateUnoListener atendas la vokitan aŭskultantan interfacon kaj pasas al la interfaco objekton subtenitan de la interfaco. Tiu objekto tiam pasiĝas al la metodo por registri la aŭskultanton.

## Sintakso:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Ekzemplo:

La jena ekzemplo baziĝas sur objekto de la Basic-biblioteko.

    Dim oListener

    oListener = CreateUnoListener( "ContListener_","com.sun.star.container.XContainerListener" )

La metodo CreateUnoListener bezonas du parametrojn. La unua estas prefikso kaj estas priskribita sube. La dua parametro estas la tute specifita nomo de la aŭskultanta interfaco uzota.

Necesas aldoni la aŭskultanton al la objekto Broadcaster. Faru tion vokante taŭgan metodon por aldoni aŭskultanton. Tiuj metodoj ĉiam kongruas al la ŝablono "addFooListener", kie "Foo" estas la tipo de aŭskultanta interfaco, sen la 'X'. En ĉi tiu ekzemplo, la metodo addContainerListener vokiĝas por registri je la XContainerListener:

    Dim oLib

    oLib = BasicLibraries.Library1 ' Library1 devas ekzisti!

    oLib.addContainerListener( oListener ) ' Registras la aŭskultanton

La aŭskultanto nun estas registrita. Kiam evento okazas, la koresponda aŭskultanto vokas la bezonatan metodon el la interfaco com.sun.star.container.XContainerListener.

La prefikso vokas registritajn aŭskultantojn el subproceduroj de Basic. La rultempa sistemo de Basic serĉas subprocedurojn aŭ funkciojn de Basic kiuj havas la nomon "PrefixListenerMethode" kaj trovinte ilin vokas ilin. Alie, rultempa eraro okazas.

En ĉi tiu ekzemplo, la aŭskultanta interfaco uzas la jenajn metodojn:

- disposing:

- Listener base interface (com.sun.star.lang.XEventListener): baza interfaco por ĉiuj aŭskultantaj interfacoj

- elementInserted:

- Metodo de la interfaco com.sun.star.container.XContainerListener

- elementRemoved:

- Metodo de la interfaco com.sun.star.container.XContainerListener

- elementReplaced:

- Metodo de la interfaco com.sun.star.container.XContainerListener

En ĉi tiu ekzemplo, la prefikso estas ContListener_. La jenaj subproceduroj devas realiĝi en Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Por ĉiu tipo de aŭskultanto ekzistas eventa struktura tipo kiu enhavas informon pri evento. Kiam aŭskultanta metodo vokiĝas, ekzemplero de la evento pasiĝas al la metodo kiel parametro. Aŭskultantaj metodoj de Basic povas ankaŭ voki tiujn eventajn objektojn, kondiĉe ke la taŭga parametro pasiĝas en la deklaro de la Sub. Ekzemple:

    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

Oni ne bezonas inkluzivi la parametron de evento se la objekto ne estos uzata.

    ' Minimuma realigo de subproceduro disposing

    Sub ContListener_disposing

    End Sub

Necesas ĉiam realigi aŭskultantajn (Listener) metodojn por eviti rultempajn erarojn de Basic.