Funkcija CreateUnoListener

Vsebina
Kazalo 🔎︎

# Funkcija CreateUnoService

Ustvari instanco prisluškovalca (Listener).

Številni predmeti Uno omogočajo registracijo prisluškovalcev z namenskimi prisluškovalnimi vmesniki. Tako lahko prisluškujete določenim dogodkom in prikličete ustrezno metodo prisluškovalca. Funkcija CreateUnoListener nastavi prisluškovalni vmesnik, povezan s predmetom UNO. Ta vmesnik prisluškovalca je potem vezan na povezani predmet.

### Skladnja:

        CreateUnoListener( Prefix As String, Typename As String) As Object

### Parametri:

Prefix: besedilna predpona, uporabljena v podprogramih BASIC, ki ravnajo z dogodki.

Typename: polno kvalificirano ime vmesnika prisluškovalca UNO.

### Vrnjena vrednost:

Storitev UNO, ki ustreza imenu vmesnika prisluškovalca Typename, sicer vrednost Null.

### Primer:

Naslednji primer prisluškuje dogodkom, ki se dogodijo predmetu knjižnice BASIC.

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

Metoda CreateUnoListener zahteva dva parametra. Prvi parameter je predpona Prefix in ga bomo razložili natančneje spodaj. Drugi parameter Typename je popolnoma kvalificirano ime prisluškovalnega vmesnika, ki ga želite uporabljati.

Vsak prisluškovalec mora biti registriran pri funkcionalnosti oddajnika LibreOffice. To izvedete z vezavo vsakega prisluškovalca na njegov povezan predmet. Metode vezave vedno sledijo vzorcu 'addFooListener', kjer je 'Foo' vrsta predmeta vmesnika prisluškovalca, brez 'X'. V tem primeru je klicana metoda addContainerListener za registracijo XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 mora obstajati!
    oLib.addContainerListener( oListener ) ' Registriraj prisluškovalca

Prisluškovalec je sedaj registriran. Ko pride do dogodka, dejavni prisluškovalec pokliče ustrezno metodo, določeno v vmesniku com.sun.star.container.XContainerListener.

Z dogodki gnani registrirani podprogrami BASIC morajo uporabljati definirano predpono Prefix. Sistem BASIC za izvajanje išče procedure ali funkcije, ki imajo ime »Prefix+ListenerMethod« in jih pokliče, če jih odkrije. V nasprotnem primeru pride do napake med izvajanjem.

V tem primeru vmesnik com.sun.star.container.XContainerListener določa naslednje metode:

Metoda | Opis
--- | ---
disposing | Osnovni vmesnik com.sun.star.lang.XEventListener za vse vmesnike prisluškovalcev
elementInserted | Metoda vmesnika com.sun.star.container.XContainerListener.
elementRemoved | Metoda vmesnika com.sun.star.container.XContainerListener.
elementReplaced | Metoda vmesnika com.sun.star.container.XContainerListener.

'ContListener_', uporabljen v tem primeru, implicira, da morajo biti v BASIC-u implementirane naslednje procedure:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Vsak vmesnik prisluškovalca določa nabor nadziranih imen dogodkov, povezanih s predmeti UNO. Kadar se zgodi dogodek, je poslan metodi kot parameter. Metode za dogodke v BASIC-u lahko tudi kličejo druga drugo, dokler je ustrezni parameter podan v deklaraciji Sub. Primer:

    Sub ContListener_disposing( oEvent As com.sun.star.lang.EventObject )
        MsgBox "disposing"
    End Sub

    Sub ContListener_elementInserted( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox oEvent.Source.' "elementInserted"
    End Sub

    Sub ContListener_elementRemoved( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementRemoved"
    End Sub

    Sub ContListener_elementReplaced( oEvent As com.sun.star.container.ContainerEvent )
        MsgBox "elementReplaced"
    End Sub

Če parametra dogodkovnega predmeta ne uporabljate, ga ni potrebno vključiti:

    ' Minimalna implementacija Sub disposing
    Sub ContListener_disposing
    End Sub

Prisluškovalne metode morate vedno implementirati, da se izognete napakam med izvajanjem BASIC-a.

Uporabite konzolo knjižnice ScriptForge, če IDE BASIC ni enostavno dostopen, t.j. med obdelavo dogodkov. Uporabite metodo DebugPrint, da dodate vse relevantne podatke v konzolo. Vnose v konzolo lahko izpišete v besedilno datoteko ali vizualizirate v pogovornem oknu. Uporabite modul Trace knjižnice Access2Base kot alternativo.

       Sub SF_Trace
          GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
          svc = CreateScriptService("ScriptForge.Exception")
          svc.Console modal:=False
          svc.DebugPrint("Lorem", "Ipsum", "...")
       End Sub ' SF_Trace

       Sub A2B_Trace
          GlobalScope.BasicLibraries.LoadLibrary("Access2Base")
          Access2Base.Trace.DebugPrint("Lorem", "Ipsum", "...")
          Access2Base.Trace.TraceConsole()
       End Sub ' A2B_Trace

Podobne teme

Ustvarjanje poslušalcev dogodkov

Preslikovanje dogodkov v predmete

Glejte tudi Dogodki dokumenta in Dogodki obrazca.

Ustvarjanje krmilnikov pogovornih oken

Poslušanje dogodkov dokumenta