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:

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
warning

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


tip

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

Podprite nas!