Module
Contents
Index 🔎︎

# CreateUnoListener Function

Tạo một thể hiện Listener (đối tượng nghe).

Rất nhiều giao diện Uno cho phép bạn đăng ký đối tượng nghe trên một giao diện đối tượng nghe đặc biệt. Vì thế bạn có thể lắng nghe các sự kiện cụ thể, và gọi phương pháp lắng nghe thích hợp. Hàm CreateUnoListener đợi giao diện đối tượng nghe đã gọi, sau đó gửi cho giao diện một đối tượng được giao diện hỗ trợ. Đối tượng này thì được gửi cho phương pháp để đăng ký đối tượng nghe.

## Cú pháp:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## Thí dụ :

Thí dụ theo đây dựa vào một đối tượng thư viện Basic.

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

Phương pháp CreatenoListenUer cần thiết hai tham số. Tham số thứ nhất là một tiền tố, được diễn tả chi tiết bên dưới. Tham số thứ hai là tên có khả năng đầy đủ của giao diện đối tượng nghe cần dùng.

Đối tượng nghe (Listener) phải được thêm vào đối tượng quảng bá Broadcaster Object. Làm như thế bằng cách gọi phương pháp thích hợp để thêm một đối tượng nghe. Các phương pháp này luôn luôn theo mẫu "addFooListener" mà "Foo" là kiểu giao diện đối tượng nghe (Listener Interface Type), không có "X". Trong thí dụ này, phương pháp addContainerListener được gọi để đăng ký XContainerListener:

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 phải tồn tại.
    oLib.addContainerListener( oListener ) ' Đăng ký đối tượng nghe

Đối tượng nghe đã được đăng ký. Khi một sự kiện xảy ra, đối tượng nghe tương ứng sẽ gọi phương pháp thích hợp từ giao diện com.sun.star.container.XContainerListener.

Tiền tố gọi đối tượng nghe (Listener) từ chương trình con Basic. Hệ thống Basic lúc chạy thì tìm các chương trình con hay hàm Basic với tên PrefixListenerMethode, và gọi nó khi được tìm. Không thì gặp một lỗi lúc chạy.

Trong thí dụ này, giao diện đối tượng nghe (Listener-Interface) sử dụng những phương pháp theo đây:

- disposing:

- Giao diện cơ bản đối tượng nghe (com.sun.star.lang.XEventListener): giao diện cơ bản cho tất cả các giao diện đối tượng nghe.

- elementInserted:

- Phương pháp của giao diện com.sun.star.container.XContainerListener

- elementRemoved:

- Phương pháp của giao diện com.sun.star.container.XContainerListener

- elementReplaced:

- Phương pháp của giao diện com.sun.star.container.XContainerListener

Trong thí dụ này, tiền tố là « ContListener_ ». Những chương trình con theo đây thì phải được thực hiện trong mã Basic:

- ContListener_disposing

- ContListener_elementInserted

- ContListener_elementRemoved

- ContListener_elementReplaced

Có một kiểu cấu trúc sự kiện mà chứa thông tin về sự kiện cho mọi kiểu đối tượng nghe (Listener). Khi gọi một đối tượng nghe, một thể hiện của sự kiện này được gửi cho phương pháp dưới dạng một tham số. Đối tượng nghe Basic cũng có thể gọi những đối tượng sự kiện này, miễn là tham số thích hợp được gửi trong lời khai báo Sub. Ví dụ :

    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

Bạn không cần bao gồm tham số của một đối tượng sự kiện nếu đối tượng đó không phải được dùng:

    ' Thực hiện tối thiểu khả năng bỏ chương trình con
    Sub ContListener_disposing
    End Sub

Phương pháp lắng nghe luôn luôn phải được thực hiện để tránh lỗi lúc chạy Basic.