OOobbs/43
質問
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 回答
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 をみると,
となっています。
|