作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请帮助我获取 TreeView
中给定 TTreeNode
的状态图标矩形的屏幕坐标(我的意思是 TTreeView.txt 中指定的图标)。 StateImages
属性)。
有一个 TTreeView.GetHitTestInfoAt(X, Y: integer): : THitTests
函数,但这并不完全是我想要的;它表示给定的坐标是否对应于标签、图标或项目的状态图标,但我需要知道单击了图标的哪一部分。
(原因是我想实现 TreeView
节点,每个项目有两个复选框,并且我使用 StateImages
来模拟复选框(一个状态是选中状态)项,另一个状态是未选中的项)。据我了解,要知道单击了哪个复选框,我需要将光标坐标与状态图标坐标进行比较。如何获取它们?)
最佳答案
您可以向控件发送 tvm_GetItemRect
消息将告诉您项目边界框的客户端坐标。使用它以及您所知道的标签文本和图标的相对位置来确定鼠标在图标中单击的位置。
您可能更愿意发送 tvm_HitTest
,而不是 GetHitTestInfoAt
消息,因为它会立即为您提供 HitTest 信息和项目句柄; tvm_GetItemRect
需要一个句柄。
您不需要屏幕坐标,因为到目前为止涉及的所有坐标都是客户端坐标,但您可以调用 ClientToScreen
如果你真的想要屏幕坐标。
关于德尔福,TTreeView : how to get the screen coordinates of the given node and its icon?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559876/
我是一名优秀的程序员,十分优秀!