如何在窗体上获取光标位置?

6

我需要获取表单中的光标位置,应该怎么做?

1个回答

18

Mouse.CursorPos传递给TForm.ScreenToClient()

Mouse.CursorPos返回屏幕坐标系统中的位置。TForm.ScreenToClient()将点转换为该窗体客户端坐标系。

实际上,所有的TControl子类都提供了ScreenToClient()方法及其反向方法ClientToScreen(),可以在不同坐标系之间进行转换。


4
您可以使用CalcCursorPos方法进行缩短,该方法在定义TForm子类的单元中取消保护。即使在Delphi 7中,该方法也是存在的。 - TLama
我需要在uses中放置哪个单元,以便编译器知道Mouse? - GuidoG
@Guido,我刚刚通过网络搜索找到了答案。或者你可以直接搜索VCL源代码。与其告诉你,不如让你自己去做其中之一。 - David Heffernan
如果我能通过网络搜索轻松找到它,我就不会在这里问了。文档提到了很多显而易见的东西,但没有提到你需要添加什么到你的使用中。没有个人攻击的意思,但我看到很多网络上的答案和示例都忘记了提到一些微不足道的东西,这使得人们无法使用它。我只是想提一下这个问题,以便我能够释放一下自己。晚上好,先生。 - GuidoG
@guido 我脑海中不知道,但我通过网络搜索很快就找到了。在你的搜索中包括Delphi和DocWiki关键词,你也会找到它。 - David Heffernan
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接