CreateUnoListener Function

建立一個偵聽者實例。

許多 Uno 介面允許您在特定的偵聽者介面上註冊偵聽者,這樣就可以偵聽特定的事件,並可以呼叫適當的偵聽者方法。CreateUnoListener 函式等待呼叫的偵聽者介面,然後將一個此介面支援的物件傳送給介面。然後此物件被傳送到註冊偵聽者的方法中。

語法

oListener = CreateUnoListener ( Prefixname, ListenerInterfaceName )

示例:

以下示例基於一個 Basic 程式庫物件。

Dim oListener

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

CreateUnoListener 方法需要兩個參數。第一個參數是一個前綴,下面將對它進行詳細介紹。第二個參數是要使用的偵聽者介面的完全合格的名稱。

然後,必須將偵聽者加入到廣播物件中,這透過呼叫相應的加入偵聽者的方法來實現。這些方法通常具有「addFooListener」的形式,其中「Foo」是不帶「X」的偵聽者介面類型。在此示例中,呼叫 addContainerListener 方法來註冊 XContainerListener:

Dim oLib

oLib = BasicLibraries.Library1 ' Library1 必須存在!

oLib.addContainerListener ( oListener ) ' 註冊偵聽者

這樣就註冊了偵聽者。當事件發生時,相應的偵聽者將從 com.sun.star.container.XContainerListener 介面呼叫適當的方法。

前綴將從 Basic 子常式中呼叫已註冊的偵聽者。Basic 執行階段系統搜尋名為「PrefixListenerMethode」的 Basic 子常式或函式並在找到時將其呼叫。否則,將發生執行階段錯誤。

在此示例中,偵聽者介面使用以下方法:

在此示例中,前綴是 ContListener_,因此,需要在 Basic 中執行以下子常式:

每個偵聽者類型中都存在一個包含事件資訊的事件結構類型。當呼叫偵聽者方法時,會將此事件的一個實例作為參數傳送到該方法。只要 Sub 宣告中傳送了相應的參數,Basic 偵聽者方法就會呼叫這些事件物件。例如:

Sub ContListener_disposing( oEvent )

    MsgBox "disposing"

    MsgBox oEvent.Dbg_Properties

End Sub

 

Sub ContListener_elementInserted( oEvent )

    MsgBox "elementInserted"

    MsgBox oEvent.Dbg_Properties

End Sub

 

Sub ContListener_elementRemoved( oEvent )

    MsgBox "elementRemoved"

    MsgBox oEvent.Dbg_Properties

End Sub

 

Sub ContListener_elementReplaced( oEvent )

    MsgBox "elementReplaced"

    MsgBox oEvent.Dbg_Properties

End Sub

如果不使用事件物件,則無需含括該物件的參數:

' Sub disposing 的最小實作

Sub ContListener_disposing

End Sub

警告圖示

任何時候都必須執行偵聽者方法,以避免發生 Basic 執行階段期間錯誤。