Obsah

# Funkce CreateUnoListener

Vytvoří instanci Listener.

Mnoho objektů UNO umožňuje pomocí speciálního rozhraní registrovat posluchače. Tak můžete naslouchat určitým událostem a volat při nich odpovídající naslouchací metodu. Funkce CreateUnoListener nastaví rozhraní posluchače přiřazené k objektu UNO. Toto rozhraní je poté na svůj přiřazený objekt navázáno.

### Syntaxe:

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

### Parametry:

Prefix: Textová předpona použitá v podprogramech jazyka BASIC, která zpracovávají události.

Typename: Plně kvalifikovaný název rozhraní posluchače UNO.

### Návratová hodnota:

Služba UNO odpovídající názvu rozhraní posluchače Typename, případně hodnota Null.

### Příklad:

V následujícím příkladu se naslouchá událostem, které nastavení pro objekt knihovny jazyka BASIC.

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

Metoda CreateUnoListener vyžaduje dva parametry. První je Prefix a podrobněji je vysvětlen níže. Druhý parametr Typename je plně kvalifikovaný název rozhraní posluchače.

Každý posluchač je nutné zaregistrovat pro funkcionalitu LibreOffice zvanou broadcaster. To se provádí navázáním posluchače na jemu přiřazený objekt. Metody pro navázání mají vždy název tvaru „addFooListener“, kde „Foo“ je typ objektu pro rozhraní posluchače bez počátečního „X“. V tomto příkladu zavoláním metody addContainerListener zaregistruje XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 musí existovat!
    oLib.addContainerListener( oListener ) ' Registerovat listener

Nyní je posluchač zaregistrován. Když nastane událost, zavolá aktivní posluchač příslušnou metodu definovanou v rozhraní com.sun.star.container.XContainerListener.

Událostmi spouštěné zaregistrované podprogramy jazyka BASIC vyžadují parametr Prefix. BASIC za běhu vyhledá procedury nebo funkce s názvem „Prefix+ListenerMethod“ a při nalezení je zavolá. Jinak dojde k běhové chybě.

V tomto příkladu definuje rozhraní com.sun.star.container.XContainerListener následující metody:

Metoda | Popis
--- | ---
disposing | com.sun.star.lang.XEventListener základní rozhraní pro všechna rozhraní Listener
elementInserted | metoda rozhraní com.sun.star.container.XContainerListener
elementRemoved | metoda rozhraní com.sun.star.container.XContainerListener
elementReplaced | metoda rozhraní com.sun.star.container.XContainerListener

V příkladu je použita předpona „ContListener_“, proto musí být v BASICu implementovány následující podprogramy:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Každé rozhraní posluchače definuje sadu názvů událostí přiřazených k objektům UNO. Jakmile nastane událost, je metodě poslána jako parametr. Metody pro události BASICu se také mohou volat vzájemně, pokud je příslušný parametr předán v deklaraci Sub. Například:

    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

Parametr s objektem událostí není potřeba přidávat, pokud jej nepoužíváte:

    ' Minimální implementace Sub disposing
    Sub ContListener_disposing
    End Sub

Metody posluchače je nutné vždy implementovat, abyste předešli běhovým chybám BASICu.

Při zpracování událostí, kdy není snadno dostupné BASIC IDE, můžete použít konzoli knihovny ScriptForge. Metodou DebugPrint přidáte do konzole libovolnou relevantní informaci. Položky konzole můžete vypsat do textového souboru nebo zobrazit v dialogovém okně. Alternativně můžete použít modul Trace knihovny Access2Base.

       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

Související témata

Vytváření posluchačů událostí

Mapování událostí na objekty

Viz také Události dokumentu, Události formuláře

Vytvoření dialogového okna s handlerem

Naslouchání událostem v dokumentu