Помощ за LibreOffice 25.2
Създава екземпляр на интерфейса Listener.
Много обекти на UNO ви позволяват да регистрирате слушатели със специализирани интерфейси. Това позволява слушане за специфични събития и извикване на подходящия метод на слушател. Функцията CreateUnoListener задава интерфейс на слушател, свързан с UNO обект. След това интерфейсът на слушател се обвързва със свързания с него обект.
    CreateUnoListener( Prefix As String, Typename As String) As Object
Prefix: текстов префикс, използван в подпрограмите на BASIC, които обработват събития.
Typename: напълно квалифицирано име на интерфейс на слушател на UNO.
UNO услугата, съответстваща на името на интерфейса на слушател Typename, в противен случай Null.
Следният примерен код слуша събитията, възникващи за обект в библиотека на 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