【发布时间】:2017-06-05 11:31:56
【问题描述】:
背景:
我想将任何东西(最好是图像、形状)粘贴(如 [CTRL+V])到我单击或用鼠标悬停的位置(使用键激活时)。我不知道如何获取我点击的文档(X、Y)上的位置。
(Apache OpenOffice、SDraw-Document、OpenOffice BASIC 宏)
我需要什么:
- 提示/提示如何从文档上的鼠标单击/鼠标位置获取位置。 (我需要哪个类、监听器、组件)
注意事项:
如果给定的oEvent 给了我单击的文档的 X+Y,则像 com.sun.star.awt.XMouseClickHandler 这样的东西会很完美。
(也许你知道如何“激活”PopupTrigger?(com.sun.star.awt.MouseEvent))
到目前为止我的代码:
我尝试使用提到的XMouseClickHandler 来获取 X+Y。
遗憾的是,X+Y 指的是窗口的相对位置,而不是形状或文本在文档上的实际位置。
执行: My Sub 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
我的参考资料:
到目前为止,我的所有信息都来自官方参考资料/文档,因为我的所有搜索都没有发现任何有用的信息。
- Class-List: http://api.libreoffice.org/docs/idl/ref/annotated.html 在这里您可以看到所用类的文档 (com.sun.star.awt.XMouseClickHandler, com.sun.star.awt.MouseEvent)
- 关于监听器的信息:https://help.libreoffice.org/3.6/Basic/CreateUnoListener_Function_Runtime
提前致谢。
【问题讨论】:
-
请edit您的问题显示the code you have so far。您应该至少包含您遇到问题的代码的大纲(但最好是minimal reproducible example),然后我们可以尝试帮助解决具体问题。您还应该阅读How to Ask。
-
这与here提出的问题基本相同吗?
-
@JimK 是的,但该线程没有给出答案(我不应该将其包含在问题中,对吗?)
-
@TobySpeight 感谢您的建议,我已经编辑了问题。希望现在好多了。如果没有,请告诉我您在哪里需要更多信息。
-
由于 OpenOffice 论坛的帖子密切相关,提一下就好了;但无论如何,由于您的编辑,问题现在更好了。
标签: position mouse copy-paste basic openoffice-basic