イベント 
ダイアログコントロールをユーザーが操作したとき、特定の操作に対してコードを実行させることができます。
各種イベント 
コントロールにマクロをプロパティのイベントタブから割り当てるときは簡単なので、ここではリスナーを使うときの方法を取り上げます。リスナーは割り当てるときと同じようなものが多いです。
これらのリスナーは全てコントロールのコントローラオブジェクトで利用します。コントロールモデルオブジェクトではありません。
リスナーメソッドの引数の struct は com.sun.star.lang.Object struct を継承しているため全て Source 要素を持ちます。ダイアログコントロールでのイベントではこの Source はイベントが発生したコントロールのコントローラオブジェクトになります。
イベントやリスナーを設定してある場合にコントローラオブジェクトから値を変更するとイベントが発生してしまうことがあります。このような場合にはモデルオブジェクトから値を変更するとイベントが発生しません。
作動時 
ボタンなどが実行されたとき com.sun.star.awt.XActionListener を利用します。
oButton = oDialog.getControl("CommandButton1")
oButton.ActionCommand = "btn1"
oActionListener = CreateUnoListener( _
"ActionListener_","com.sun.star.awt.XActionListener")
oButton.addActionListener()
Sub ActionListener_actionPerformed( oEv As com.sun.star.awt.ActionEvent )
msgbox oEv.ActionCommand
End Sub
Sub ActionListener_disposing( oEv As com.sun.star.lang.EventObject )
End Sub
テキストを変更した時 
テキストボックスなどのテキストが変更されたとき com.sun.star.awt.XTextListener を利用します。
oEdit = oDialog.getControl("TextEdit1")
oTextListener = CreateUnoListener( _
"TextListener_", "com.sun.star.awt.XTextListener")
oEdit.addtextListener(oTextListener)
Sub TextListener_textChanged( oEv As com.sun.star.awt.TextEvent )
msgbox oEv.Source.getText()
End Sub
Sub TextListener_disposing( oEv As com.sun.star.lang.EventObject )
End Sub
ステータスを変更した時 
チェックボックスやオプションボタンなどチェックや選択が変更されたとき com.sun.star.awt.XItemListener を利用します。
oCheckBox = oDialog.getControl("CheckBox1")
oItemListener = CreateUnoListener( _
"ItemListener_", "com.sun.star.awt.XItemListener")
oCheckBox.addItemListener(oItemListener)
Sub ItemListener_itemStateChanged( oEv As com.sun.star.awt.ItemEvent )
msgbox oEv.Source.State
End Sub
Sub ItemListener_disposing( oEv As com.sun.star.lang.EventObject )
End Sub
- リストボックス
- ItemEvent.Selected: 新しく選択された要素のインデックス。Highlighted および ItemId はいつも 0。
フォーカスを得た時と失った時 
フォーカスを得ることが出来るラベルや線以外のコントロールがフォーカスを得たり、失ったりするとき com.sun.star.awt.XFocusListener を利用します。
oEdit = oDialog.getControl("TextEdit1")
oFocusListener = CreateUnoListener( _
"FocusListener_","com.sun.star.awt.XFocusListener")
oEdit.addFocusListener(oFocusListener)
Sub FocusListener_focusGained( oEv As com.sun.star.awt.FocusEvent )
oEv.NextFocus.setFocus()
End Sub
Sub FocusListener_focusLost( oEv As com.sun.star.awt.FocusEvent )
End Sub
Sub FocusListener_disposing( oEv As com.sun.star.lang.EventObject )
End Sub
キーを押した時と離した時 
コントロールにフォーカスがあり、その状態でキーを押したり話したりしたとき com.sun.star.awt.XKeyListener を利用します。
oButton = oDialog.getControl("CommandButton1")
oKeyListener = CreateUnoListener( _
"KeyListener_","com.sun.star.awt.XKeyListener")
oButton.addKeyListener(oKeyListener)
Sub KeyListener_keyPressed( oEv As com.sun.star.awt.KeyEvent )
msgbox oEv.KeyCode & ", " & oEv.Modifiers
End Sub
Sub KeyListener_keyReleased( oEv As com.sun.star.awt.KeyEvent )
End Sub
Sub KeyListener_disposing( oEv As com.sun.star.lang.EvnetObject )
End Sub
キーを押しマウス操作する時とマウス操作時 
コントロール上でマウスをドラッグしたときとマウスカーソルが動いたとき com.sun.star.awt.XMouseMotionListener を利用します。
oMouseMotionListener = CreateUnoListener( _
"MouseMotionListener_","com.sun.star.awt.XMouseMotionListener")
oDialog.addMouseMotionListener(oMouseMotionListener)
Sub MouseMotionListener_mouseDragged( oEv As com.sun.star.awt.MouseEvent )
End Sub
Sub MouseMotionListener_mouseMoved( oEv As com.sun.star.awt.MouseEvent )
oDialog.getControl("Label1").setLabel(oEv.X & ", " & oEv.Y)
End Sub
Sub MouseMotionListener_disposing( oEv As com.sun.star.lang.EventObject)
End Sub
マウスボタンを押した時と離した時 
コントロール上にマウスカーソルがあり、マウスのボタンを操作したとき com.sun.star.awt.XMouseListener を利用します。
oLabel = oDialog.getControl("Label1")
oMouseListener = CreateUnoListener( _
"MouseListener_","com.sun.star.awt.XMouseListener")
oLabel.addMouseListener(oMouseListener)
Sub MouseListener_mousePressed( oEv As com.sun.star.awt.MouseEvent )
If oEv.Buttons = com.sun.star.awt.MouseButton.RIGHT Then
msgbox oEv.ClickCount
End If
End Sub
Sub MouseListener_mouseReleased( oEv As com.sun.star.awt.MouseEvent )
End Sub
Sub MouseListener_mouseEntered( oEv As com.sun.star.awt.MouseEvent )
End Sub
Sub MouseListener_mouseExited( oEv As com.sun.star.awt.MouseEvent )
End Sub
Sub MouseListener_disposing( oEv As com.sun.star.lang.EventObject)
End Sub
マウスを内に入れた時と外に出した時 
マウスカーソルがコントロール上に来たときまたはコントロール上から外に出たとき、これはマウスボタンを押した時と離した時と同じリスナーを利用します。上記参照。
調整時 
スクロールバーやスピンコントロールなどの値を調整したとき com.sun.star.awt.XAdjustmentListener を利用します。
oScroll = oDialog.getControl("ScrollBar1")
oAdjustmentListener = CreateUnoListener( _
"AdjustmentListener_","com.sun.star.awt.XAdjustmentListener")
oScroll.addAdjustmentListener(oAdjustmentListener)
Sub AdjustmentListener_adjustmentValueChanged( _
oEv As com.sun.star.awt.AdjustmentEvent )
msgbox oEv.Value
End Sub
Sub AdjustmentListener_disposing( oEv As com.sun.star.lang.EventObject )
End Sub