Съдържание

# Функция CreateUnoListener

Създава екземпляр на интерфейса Listener.

Много обекти на UNO ви позволяват да регистрирате слушатели със специализирани интерфейси. Това позволява слушане за специфични събития и извикване на подходящия метод на слушател. Функцията CreateUnoListener задава интерфейс на слушател, свързан с UNO обект. След това интерфейсът на слушател се обвързва със свързания с него обект.

### Синтаксис:

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

### Параметри:

Име | Тип | Описание
--- | --- | ---
Prefix | String | A text prefix used in BASIC subroutines that handle events.
Typename | String | A fully qualified UNO listener interface name.

### Тип на резултата:

Object. The UNO service corresponding to the Typename listener interface name, Null value otherwise.

### Пример:

Следният примерен код слуша събитията, възникващи за обект в библиотека на BASIC.

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

Методът CreateUnoListener изисква два параметъра. Първият е Prefix и е подробно обяснен по-долу. Вторият параметър, Typename, е напълно квалифицираното име на интерфейса на слушател.

Всеки слушател трябва да бъде регистриран пред функционалността на LibreOffice за разпространяване на събития. Това се извършва чрез обвързване на слушателя с асоциирания с него обект. Методите за обвързване винаги следват схемата „addFooListener“, където „Foo“ е обектният тип на интерфейса на слушател без началното „X“. В този пример се извиква методът addContainerListener, за да се регистрира слушателят от тип XContainerListener:

    Dim oLib As Object
    oLib = BasicLibraries.Library1 ' Library1 трябва да съществува!
    oLib.addContainerListener(oListener) ' Регистрираме слушателя

Сега слушателят е регистриран. Когато възникне събитие, активният слушател извиква подходящия метод, дефиниран в интерфейса com.sun.star.container.XContainerListener.

Управляваните от събития регистрирани подпрограми на BASIC изискват използването на дефиниран префикс. Системата за изпълнение на BASIC търси процедури или функции с името „Префикс+МетодНаСлушателя“ и ги извиква, ако бъдат намерени. В противен случай възниква грешка по време на изпълнение.

В този пример интерфейсът com.sun.star.container.XContainerListener дефинира следните методи:

Метод | Описание
--- | ---
disposing | com.sun.star.lang.XEventListener – базов интерфейс на всички интерфейси на слушатели
elementInserted | Метод на интерфейса com.sun.star.container.XContainerListener
elementRemoved | Метод на интерфейса com.sun.star.container.XContainerListener
elementReplaced | Метод на интерфейса com.sun.star.container.XContainerListener

Използваният в този пример префикс ContListener_ означава, че трябва да са реализирани следните подпрограми на BASIC:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Всеки интерфейс на слушател дефинира набор от имена на контролирани събития, свързани с UNO обекти. Когато възникне събитие, то се изпраща на метода като параметър. Методите на BASIC за събития могат също да се извикват взаимно, стига да се подава подходящият параметър в декларацията Sub. Например:

    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

Когато параметърът за обект събитие не се използва, може да бъде пропуснат:

    ' Минимална реализация на Sub disposing
    Sub ContListener_disposing
    End Sub

Методите на слушателя трябва винаги да са реализирани, за да се избегнат грешки на BASIC по време на изпълнение.

Използвайте конзолата на библиотеката ScriptForge, когато развойната среда на BASIC не е лесно достъпна, например по време на обработка на събития. Добавяйте необходимата информация в конзолата с метода DebugPrint. Записите в конзолата могат да се разтоварят в текстов файл или да се визуализират в диалогов прозорец. Като алтернатива можете да използвате модула Trace на библиотеката 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

Теми, свързани с показаната

Създаване на слушатели за събития

Съпоставяне на събития и обекти

Вижте също Събития в документи,Събития във формуляри.

Създаване на обработчик на диалог

Слушане на събития в документ

Обекти, функции и услуги на UNO