Edukiak
Indizea 🔎︎

# 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:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

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

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

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

Erlazionatutako gaiak

Gertaeren entzuleak sortzea

Objektuekin mapatutako gertaerak

Ikusi, baita ere, dokumentu-gertaerak, inprimaki-gertaerak.

Elkarrizketa-koadroen maneiatzailea sortzea

Dokumentu-gertaerak entzutea