Top > OOoBasic > Dialog > Event
*イベント [#g4a21f4f]

ダイアログコントロールをユーザーが操作したとき、特定の操作に対してコードを実行させることができます。

#contents

**各種イベント [#wc3c8bf5]

コントロールにマクロをプロパティのイベントタブから割り当てるときは簡単なので、ここではリスナーを使うときの方法を取り上げます。リスナーは割り当てるときと同じようなものが多いです。

これらのリスナーは全てコントロールのコントローラオブジェクトで利用します。コントロールモデルオブジェクトではありません。

リスナーメソッドの引数の struct は com.sun.star.lang.Object struct を継承しているため全て Source 要素を持ちます。ダイアログコントロールでのイベントではこの Source はイベントが発生したコントロールのコントローラオブジェクトになります。

イベントやリスナーを設定してある場合にコントローラオブジェクトから値を変更するとイベントが発生してしまうことがあります。このような場合にはモデルオブジェクトから値を変更するとイベントが発生しません。
***作動時 [#wf74f655]

ボタンなどが実行されたとき 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
***テキストを変更した時 [#b605ca88]
テキストボックスなどのテキストが変更されたとき 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
***ステータスを変更した時 [#obb533e5]
チェックボックスやオプションボタンなどチェックや選択が変更されたとき 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。
***フォーカスを得た時と失った時 [#ga2eef77]
フォーカスを得ることが出来るラベルや線以外のコントロールがフォーカスを得たり、失ったりするとき 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
***キーを押した時と離した時 [#m290adb4]

コントロールにフォーカスがあり、その状態でキーを押したり話したりしたとき 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
***キーを押しマウス操作する時とマウス操作時 [#q5ab0435]

コントロール上でマウスをドラッグしたときとマウスカーソルが動いたとき 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
***マウスボタンを押した時と離した時 [#ga5b1fa7]

コントロール上にマウスカーソルがあり、マウスのボタンを操作したとき 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
***マウスを内に入れた時と外に出した時 [#obfd0000]
マウスカーソルがコントロール上に来たときまたはコントロール上から外に出たとき、これはマウスボタンを押した時と離した時と同じリスナーを利用します。上記参照。
***調整時 [#s85f0ce0]
スクロールバーやスピンコントロールなどの値を調整したとき 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

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes