CreateUnoListener funtzioa

Listener instantzia sortzen du.

Many Uno objects let you register listeners with dedicated listener interfaces. This allows to listen for specific events and call up the appropriate listener method. The CreateUnoListener function sets a listener interface associated to an UNO object. The listener interface is then bound to its associated object.

Sintaxia:


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

Parametroak:

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

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.

Every listener must be registered to LibreOfficeDev broadcaster feature. This is performed by binding each listener to its associated object. Bind methods always follow the pattern 'addFooListener', where 'Foo' is the object type of the listener interface, without the 'X'. In this example, the addContainerListener method is called to register the XContainerListener:


Dim oLib As Object
oLib = BasicLibraries.Library1 ' Library1ek 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 base interface for all Listener Interfaces

elementInserted

com.sun.star.container.XContainerListener interfazearen metodoa

elementRemoved

com.sun.star.container.XContainerListener interfazearen metodoa

elementReplaced

com.sun.star.container.XContainerListener interfazearen metodoa


'ContListener_' used in this example implies that the following subroutines must be implemented in BASIC:

Every listener interface defines a set of controlled event names associated to Uno objects. When an event occurs, it is sent to the method as a parameter. BASIC event methods can also call one another, as long as the appropriate parameter is passed in the Sub declaration. For example:


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 Basic-en exekuzio-garaiko erroreak eragozteko.


tip

Use ScriptForge library console when the BASIC IDE is not easily accessible, that is during events processing. Use the DebugPrint method to add any relevant information to the console. Console entries can be dumped to a text file or visualized in a dialog window. Use Trace module of Access2Base library as an alternative



   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