Top > OOobbs > 43

OOobbs/43 Edit

  • サマリ: マウス操作を認識する方法
  • 環境: Calc
  • 状態: 解決
  • 投稿者: Dol?
  • 投稿日: 2004-11-16 (火) 03:24:33

質問 Edit

Calcの操作中にマウスのボタンがクリックされたことを認識しようと、以下のようなコードを書いてみましたが動作しませんでした。 リスナーの登録をするオブジェクトが間違えているのではないかと思うのですが結局分かりませんでした。 どこが間違っているのかよろしければ教えていただけないでしょうか。 よろしくお願いします。

Dim oDoc As Object 
Dim oController As Object
Dim oFrame As Object
Dim oContainerWindow As Object
Dim oMouseListener As Object
oDoc = ThisComponent
oController = oDoc.getCurrentController()
oFrame = oController.getFrame()
oContainerWindow = oFrame.getContainerWindow()
oMouseListener = CreateUnoListener("Ms_","com.sun.star.awt.XMouseListener")
oContainerWindow.addMouseListener(oMouseListener)

Sub Ms_mousePressed(oEvent)
	Select Case oEvent.Buttons
		Case "LEFT"
			MsgBox "Keys: Left"
		Case "RIGHT"
			MsgBox "Keys: Right"
	End Select
End Sub

回答 Edit

  • MouseListener を使わずに,MouseClickHandler をつかうといいようです。

MouseClickHanlder は CurrentController オブジェクトで addMouseClickHandler メソッドを使って使用します。

Global oMouseClickHandler As Object

Sub Register
Dim oDoc As Object 
Dim oController As Object

oDoc = ThisComponent
oController = oDoc.getCurrentController()

oMouseClickHandler = CreateUnoListener("Ms_","com.sun.star.awt.XMouseClickHandler")
oController.addMouseClickHandler(oMouseClickHandler)
End Sub

Sub Ms_disposing()
End Sub

Sub Ms_mousePressed(oEvent)
	Select Case oEvent.Buttons
		Case com.sun.star.awt.MouseButton.LEFT
			MsgBox "Keys: Left"
		Case com.sun.star.awt.MouseButton.RIGHT
			MsgBox "Keys: Right"
	End Select
End Sub

Sub Ms_mouseReleased()
End Sub

Sub unRegister
Dim oDoc As Object 
Dim oController As Object

oDoc = ThisComponent
oController = oDoc.getCurrentController()
oController.removeMouseClickHandler(oMouseClickHandler)
End Sub

あと,Sub Ms_mousePressed(oEvent) の中で oEvent.Buttons で戻されるのは定数ですので short (integer ?) 型の値が戻されます。IDL Ref の com.sun.star.awt.MouseButton Constant Group をみると,

ボタン
LEFT1
RIGHT2
MIDDLE3

となっています。

  • はにゃ?? 2004-11-17 (水) 10:15:47
  • 回答ありがとうございました。MouseClickHandlerを使うのですね。 -- Dol? 2004-11-18 (木) 22:53:50


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