背景:
我想将任何东西(最好是图像、形状)粘贴(如 [CTRL+V])到我单击或用鼠标悬停的位置(使用键激活时)。我不知道如何在单击的文档 (X, Y) 上获取位置。
(Apache OpenOffice、SDraw-Document、OpenOffice BASIC 宏)
我需要的:
- 提示/提示如何从文档上的鼠标单击/鼠标位置获取位置。(我需要哪个类、监听器、组件)
注意:如果给定的文件给了我单击的文档的 X+Y com.sun.star.awt.XMouseClickHandler
,则类似 a 的东西会很完美。oEvent
(也许你知道如何“激活” PopupTrigger
?(com.sun.star.awt.MouseEvent
))
到目前为止我的代码:
我尝试使用提到XMouseClickHandler
的来获得 X+Y。遗憾的是,X+Y 指的是窗口的相对位置,而不是形状或文本在文档上的实际位置。
执行: My SubMain
通过顶部的菜单按钮执行。然后单击任意位置将输出(通过 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
我的参考资料:
到目前为止,我所有的信息都来自官方参考资料/文档,因为我的所有搜索都没有发现任何有用的信息。
- 类列表:http ://api.libreoffice.org/docs/idl/ref/annotated.html在这里你可以看到所用类的文档(com.sun.star.awt.XMouseClickHandler, com.sun.star.awt .鼠标事件)
- 关于监听器的信息:https ://help.libreoffice.org/3.6/Basic/CreateUnoListener_Function_Runtime
提前致谢。