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!