CreateUnoListener funtzioa

Entzule-instantzia bat sortzen du.

UNO objektu askok entzuleak entzule-interfaze espezifikoekin erregistratzea ahalbidetzen dute. Horrela, gertaera espezifikoak entzun eta entzule-metodo egokiari deitu dakioke. CreateUnoListener funtzioak UNO objektu bati lotutako entzule-interfaze bat ezartzen du. Entzule-interfazea, horrela, objektuari lotuta egongo da.

Sintaxia:


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

Parametroak:

Prefix: Basic azpierrutinetan gertaerak maneiatzeko erabiltzen den testu-aurrizkia.

Typename: UNO entzule-interfaze izen kualifikatu osoa.

Itzulera-balioa:

Typename entzule-interfazearen izenari dagokion UNO zerbitzua, bestela Null balioa.

Adibidea:

Hurrengo adibidean, Basic liburutegiko objektu baten gertaerak entzuten dira.


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

CreateUnoListener metodoak bi parametro behar ditu. Lehena Prefix da eta behean xeheago azaltzen da. Bigarren parametroa, Typename, entzule-interfazearen izen kualifikatu osoa da.

Entzule guztiek egon behar dute LibreOffice igorle-eginbidearekin erregistratuta. Hori egiteko, entzule bakoitza berari dagokion objektuarekin lotuta egon behar du. Lotzeko metodoek beti jarraitzen dute 'addFooListener' eredua, non 'Foo' entzule-interfazearen objektu mota den, 'X' gabe. Hurrengo adibidean, addContainerListener metodoa deitzen da XContainerListener erregistratzeko:


Dim oLib As Object
oLib = BasicLibraries.Library1 ' Library1-ek lehendik egon behar du!
oLib.addContainerListener( oEntzulea ) ' Erregistratu entzulea

Orain, entzulea erregistratuta dago. Gertaera bat dagoenean, entzule aktiboak com.sun.star.container.XContainerListener interfazean definitutako metodo egokiari deitzen dio.

Gertaerek gidatutako Basic azpierrutina erregistratuek Prefix definitu bat erabili behar dute. Exekuzio-garaiko Basic sistemak 'Prefix+ListenerMethod' izena duen azpierrutina edo funtzioa bilatzen du eta deitu egiten dio aurkitzen badu. Bestela, exekuzio-garaiko errorea gertatzen da.

Honako adibidean, com.sun.star.container.XContainerListener interfazeak hurrengo metodoak definitzen ditu:

metodoa

deskribapena

disposing

com.sun.star.lang.XEventListener oinarrizko interfazea entzule-interfaze guztietarako

elementInserted

com.sun.star.container.XContainerListener interfazearen metodoa

elementRemoved

com.sun.star.container.XContainerListener interfazearen metodoa

elementReplaced

com.sun.star.container.XContainerListener interfazearen metodoa


Adibide honetan erabilitako 'ContListener_' aurrizkiak zera inplikatzen du, hurrengo azpierrutinak inplementatu behar direla Basic-en:

Entzule-interfaze bakoitzak UNO objektuei lotutako gertaera kontrolatuen izenen multzo bat definitzen du. Gertaera bat dagoenean, metodoari bidaltzen zaio parametro gisa. BASIC gertaera-metodoek elkarri ere deitu diezaiekete, betiere Sub deklarazioan parametro egokia pasatzen bada. Adibidez:


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

Gertaera-objektuaren parametroa ez da sartu behar erabiliko ez bada:


' Sub disposing-en inplementazio minimoa
Sub ContListener_disposing
End Sub
warning

Entzule-metodoak beti inplementatu behar dira, horrela Basic-en exekuzio-garaiko erroreak eragozten baitira.


tip

Erabili ScriptForge liburutegiaren kontsola BASIC IDEa erraz atzitu ezin denean, adibidez gertaerak aurrera egiten ari direnean. Erabili DebugPrint metodoa kontsolari informazio garrantzitsua gehitzeko. Kontsola-sarrerak testu-fitxategi batera irauli daitezke edo elkarrizketa-koadro batean bistaratu daitezke. Erabili Access2Base liburutegiaren Trace modulua ordezko gisa.



   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

Emaguzu laguntza!