OpenOfficeBASICマクロでマウスクリックからドキュメント座標を取得する方法

カントリーン

バックグラウンド:

マウスでクリックまたはホバーした位置(キーを使用してアクティブ化する場合)に、何か([CTRL + V]など)を貼り付けたい(できれば画像、形状)。クリックしたドキュメント(X、Y)の位置取得する方法がわかりません

(Apache OpenOffice、SDraw-Document、OpenOffice BASICマクロ)

必要なもの:

  • ドキュメント上のマウスクリック/マウス位置から場所を取得する方法のヒント/ヒント。(必要なクラス、リスナー、コンポーネント)

com.sun.star.awt.XMouseClickHandler与えられたものoEventが私にクリックしたドキュメントのX + Yを与えた場合、aのようなものは完璧でしょう(たぶんあなたは「アクティブ化」する方法を知っていますPopupTriggerか?(com.sun.star.awt.MouseEvent))

これまでの私のコード:

上記XMouseClickHandler使用してX + Yを取得してみました残念ながら、X + Yはウィンドウの相対位置を指し、図形やテキストがドキュメント上で実際に持つ位置ではありません。

実行:マイサブMainは上部のメニューボタンを介して実行されます。次に、任意の場所をクリックすると、そのクリックの座標が(MsgBoxを介して)出力されます。

唯一の問題:座標は、ドキュメントの隅ではなく、ウィンドウの隅を基準にしています。

Global gListener As Object

Sub Main
  gListener = CreateUnoListener("Listener_","com.sun.star.awt.XMouseClickHandler")
  ThisComponent.CurrentController.addMouseClickHandler(gListener) 
End Sub

Sub Listener_mousePressed(oMouseEvent) As Boolean
   ThisComponent.CurrentController.removeMouseClickHandler(gListener)

   Msg = "Position: "
   Msg = Msg & oMouseEvent.X & "/" & oMouseEvent.Y
   MsgBox(Msg)

   REM :: I want something like:
   REM :: Msg = "Position: " & oMouseEvent.PositionOnDocument.X
   REM :: Msg = Msg & "/" & oMouseEvent.PositionOnDocument.Y
   REM :: MsgBox(Msg)
End Sub

私の参考文献:

私のすべての情報は、これまでの公式の参考文献/ドキュメントからのものです。すべての検索で役立つものが見つからなかったためです。

前もって感謝します。

カントリーン

私はついに、(ドキュメントに対して)マウスクリックの正確な座標取得する方法を見つけました下部のステータスバーから情報を取得できました。ステータスバーには通常、座標が表示されます(私にとってはセンチメートル単位)。

位置(X / Y)を取得するために現在使用している関数は次のとおりです。

REM // Warning: If there is currently a selection, the returning Point will instead show the coordinates of the selection!
Sub GetMousePositionOnDocument as com.sun.star.awt.Point
  Dim aPosition As New com.sun.star.awt.Point
  Dim o1, o2, o3, o4, o5, o6

  REM // First get AccessibleContext of the Window of the active Frame of the Application
  o1 = StarDesktop.ActiveFrame.ContainerWindow.AccessibleContext

  REM // 7th AC of o1 is the StatusBar at the bottom;
  o2 = o1.GetAccessibleChild(6).AccessibleContext

  REM // 2nd AC of o2 is the Position + Size of the Selection (e.g: "10,95 / 14,980,00 x 0,00") 
  o3 = o2.GetAccessibleChild(1)
  o4 = o3.GetText()

  REM // Taking out only the coordinates from o4
  REM // TODO: Check for negatives (longer)
  o5 = LEFT(o4, 4)
  o6 = MID(o4, 8, 5)

  aPosition.X = o5
  aPosition.Y = o6

  REM // Return
  GetMousePositionOnDocument = aPosition
End Sub

注:この関数は、前の関数の中でListener_mousePressed上から呼び出されます。

うまくいけば、これは他の人にもうまくいくでしょう。

どうやって見つけたの?

ThisComponentとStarDesktopのウィンドウのすべてのApplicationContextをデバッガーで手動でチェックすることに非常に多くの時間を費やしました。

これは、他の値が必要な場合にThisDesktopを反復処理するための開始点です。 ThisComponent.CurrentController.Frame.ComponentWindow.AccessibleContext

将来の改善

デバッガーを調べたので、GetAccessibleChild()関数のインデックスを「知っています」。到達するためのより良い方法は確かo3にあり、すべての人が同じAccessibleContextを持っていると期待すべきではありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

WebBrowserドキュメントでのマウスクリック座標の取得

分類Dev

Javaで私のウィンドウの外でマウスクリック座標を取得する方法

分類Dev

Unityでクリックしてヘクスマップから座標を取得する方法

分類Dev

アニメーション中にOpenGLでマウスクリック座標を取得しますか?

分類Dev

mongodbドキュメントからマトリックスを作成する

分類Dev

マウスクリックでXY座標をPHP変数に取得する

分類Dev

キャンバスをクリックしたときにマウスの座標を取得する

分類Dev

テキスト座標のtextareaでマウスクリックの場所を取得します

分類Dev

C ++プロジェクトからマークダウンドキュメントを生成する方法は?

分類Dev

マウスクリックでmatplotlibプロット図pythonの座標を取得します

分類Dev

Python:matplotlib.canvasを使用してマウスクリックで座標を取得する方法

分類Dev

マウスクリックイベントの座標をmatplotlibに保存する

分類Dev

Webサイト全体でマウスクリック座標を傍受する

分類Dev

右クリックのコンテキストメニューからWindowsレジストリで2つのコマンドを実行する方法

分類Dev

three.jsでマウスクリックポイントの3D座標を取得します

分類Dev

Pyspark LDAモデルからドキュメントトピックマトリックスを抽出する

分類Dev

Googleドキュメントでマクロを作成する方法

分類Dev

OpenGLドキュメントのマトリックスを理解する方法は?

分類Dev

マングースで地理空間クエリを使用してドキュメントを取得する方法

分類Dev

マングースで地理空間クエリを使用してドキュメントを取得する方法

分類Dev

これは、マウスクリック座標がこれらの範囲内にあるかどうかを確認する正しい方法ですか?

分類Dev

Rでドキュメント用語マトリックスを作成する

分類Dev

マウスクリック座標で画像ボックスに長方形を描画する方法

分類Dev

低レベルのマウスコールバックメソッドからlParamからマウスカーソル座標を取得するにはどうすればよいですか?

分類Dev

ボタンをクリックするとマウスの座標を取得します

分類Dev

ElasticSearchインデックスからPythonで用語ドキュメントマトリックスを作成する

分類Dev

Pythonを使用してマウスのダブルクリックからテキストを取得する方法

分類Dev

SDKで初めて右クリックしてマウス座標を取得する

分類Dev

Pythonでドキュメント用語の頻度マトリックスを作成する方法

Related 関連記事

  1. 1

    WebBrowserドキュメントでのマウスクリック座標の取得

  2. 2

    Javaで私のウィンドウの外でマウスクリック座標を取得する方法

  3. 3

    Unityでクリックしてヘクスマップから座標を取得する方法

  4. 4

    アニメーション中にOpenGLでマウスクリック座標を取得しますか?

  5. 5

    mongodbドキュメントからマトリックスを作成する

  6. 6

    マウスクリックでXY座標をPHP変数に取得する

  7. 7

    キャンバスをクリックしたときにマウスの座標を取得する

  8. 8

    テキスト座標のtextareaでマウスクリックの場所を取得します

  9. 9

    C ++プロジェクトからマークダウンドキュメントを生成する方法は?

  10. 10

    マウスクリックでmatplotlibプロット図pythonの座標を取得します

  11. 11

    Python:matplotlib.canvasを使用してマウスクリックで座標を取得する方法

  12. 12

    マウスクリックイベントの座標をmatplotlibに保存する

  13. 13

    Webサイト全体でマウスクリック座標を傍受する

  14. 14

    右クリックのコンテキストメニューからWindowsレジストリで2つのコマンドを実行する方法

  15. 15

    three.jsでマウスクリックポイントの3D座標を取得します

  16. 16

    Pyspark LDAモデルからドキュメントトピックマトリックスを抽出する

  17. 17

    Googleドキュメントでマクロを作成する方法

  18. 18

    OpenGLドキュメントのマトリックスを理解する方法は?

  19. 19

    マングースで地理空間クエリを使用してドキュメントを取得する方法

  20. 20

    マングースで地理空間クエリを使用してドキュメントを取得する方法

  21. 21

    これは、マウスクリック座標がこれらの範囲内にあるかどうかを確認する正しい方法ですか?

  22. 22

    Rでドキュメント用語マトリックスを作成する

  23. 23

    マウスクリック座標で画像ボックスに長方形を描画する方法

  24. 24

    低レベルのマウスコールバックメソッドからlParamからマウスカーソル座標を取得するにはどうすればよいですか?

  25. 25

    ボタンをクリックするとマウスの座標を取得します

  26. 26

    ElasticSearchインデックスからPythonで用語ドキュメントマトリックスを作成する

  27. 27

    Pythonを使用してマウスのダブルクリックからテキストを取得する方法

  28. 28

    SDKで初めて右クリックしてマウス座標を取得する

  29. 29

    Pythonでドキュメント用語の頻度マトリックスを作成する方法

ホットタグ

アーカイブ