Top > OOoBasic > Dialog > Event

イベント Edit

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

各種イベント Edit

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

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

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

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

作動時 Edit

ボタンなどが実行されたとき 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

テキストを変更した時 Edit

テキストボックスなどのテキストが変更されたとき 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

ステータスを変更した時 Edit

チェックボックスやオプションボタンなどチェックや選択が変更されたとき 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。

フォーカスを得た時と失った時 Edit

フォーカスを得ることが出来るラベルや線以外のコントロールがフォーカスを得たり、失ったりするとき 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

キーを押した時と離した時 Edit

コントロールにフォーカスがあり、その状態でキーを押したり話したりしたとき 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

キーを押しマウス操作する時とマウス操作時 Edit

コントロール上でマウスをドラッグしたときとマウスカーソルが動いたとき 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

マウスボタンを押した時と離した時 Edit

コントロール上にマウスカーソルがあり、マウスのボタンを操作したとき 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

マウスを内に入れた時と外に出した時 Edit

マウスカーソルがコントロール上に来たときまたはコントロール上から外に出たとき、これはマウスボタンを押した時と離した時と同じリスナーを利用します。上記参照。

調整時 Edit

スクロールバーやスピンコントロールなどの値を調整したとき 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