Module
Contents
Index 🔎︎

# CreateUnoListener Function

리스너 인스턴스를 만듭니다.

많은 Uno 인터페이스를 사용하여 특정 리스너 인터페이스에서 리스너를 등록할 수 있습니다. 이렇게 하면 특정 이벤트를 수신 대기하고 해당 리스너 메소드를 호출할 수 있습니다. CreateUnoListener 함수는 호출된 리스너 인터페이스를 대기한 다음 인터페이스가 지원하는 개체를 인터페이스에 전달합니다. 그런 다음 리스너 등록을 위해 메소드에 이 개체가 전달됩니다.

## 구문:

    oListener = CreateUnoListener( Prefixname, ListenerInterfaceName )

## 예:

다음의 예는 Basic 라이브러리 개체에 기초합니다.

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

CreateUnoListener 메소드에는 두 개의 매개 변수가 필요합니다. 첫 번째 매개 변수는 접두사이며 자세한 내용은 아래 설명되어 있습니다. 두 번째 매개 변수는 사용할 리스너 인터페이스의 전체 이름입니다.

리스너는 그런 다음 Broadcaster 개체에 추가해야 합니다. 이렇게 하려면 리스너 추가를 위한 적절한 메소드를 호출합니다. 이러한 메소드는 항상 "addFooListener" 패턴(여기에서 "Foo"는 'X'가 없는 리스너 인터페이스 유형)을 따릅니다. 이 예에서는 XContainerListener를 등록하기 위해 addContainerListener 메소드를 호출합니다.

    Dim oLib
    oLib = BasicLibraries.Library1 ' Library1 must exist!
    oLib.addContainerListener( oListener ) ' Register the listener

이제 리스너가 등록되었습니다. 이벤트가 발생하면 해당 리스너가 com.sun.star.container.XContainerListener 인터페이스에서 해당 메소드를 호출합니다.

접두사는 Basic 서브루틴에서 등록된 리스너를 호출합니다. Basic 런타임 시스템은 "PrefixListenerMethode"라는 이름의 Basic 서브루틴 또는 함수를 검색하여 발견될 경우 호출합니다. 이러한 서브루틴이나 함수가 발견되지 않을 경우 런타임 오류가 발생합니다.

이 예에서 리스너 인터페이스는 다음 메소드를 사용합니다.

- 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

이벤트에 대한 정보를 포함하는 이벤트 구조 유형이 모든 리스너 유형에 대해 존재합니다. 리스너 메소드가 호출되면 이 이벤트의 인스턴스가 메소드에 매개 변수로 전달됩니다. 또한 해당 매개 변수가 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

다음과 같이 이벤트 개체를 사용하지 않을 경우 개체의 매개 변수를 포함할 필요가 없습니다.

    ' Minimal implementation of Sub disposing
    Sub ContListener_disposing
    End Sub

Basic 런타임 오류를 방지하기 위해 리스너 메소드를 항상 구현해야 합니다.