如何获取TVirtualStringTree的热节点坐标?

时间:2009-11-17 19:41:49

标签: delphi hover mouse virtualtreeview ownerdrawn

当鼠标悬停在它上面时,我试图以不同方式绘制VirtualStringTree的单元格。如何检测热节点的坐标?我知道有一个HotNode属性,但它只返回鼠标光标下的Node。我需要获得该节点的单元格坐标(X,Y)。

1 个答案:

答案 0 :(得分:4)

您可以使用GetDisplayRect方法获取任何节点的坐标。此外,InvalidateNode会告诉您刚刚失效的节点的坐标。

出于您的目的,我认为您不需要知道任何节点的坐标。相反,您需要知道,当您绘制节点时,您正在绘制的节点是否是热门节点。所有特定于节点的所有者绘制事件都会告诉您当前节点和坐标,OnPaintText除外,它只告诉您节点。但是,您无需自己跟踪当前的热节点。只需检查Node = Sender.HotNode是否确定用于绘制节点及其文本的样式。

但是,您可能可以避免整个问题。控件已经有相当数量的特定于热节点的代码,所以它可能只是找到要配置的属性而不必自己绘制所有内容。