Как получить горячие координаты узла TVirtualStringTree? - PullRequest
2 голосов
/ 17 ноября 2009

Я пытаюсь нарисовать ячейку VirtualStringTree по-другому, когда мышь находится над ней. Как я могу определить координаты горячего узла? Я знаю, что есть свойство HotNode, но оно возвращает только узел, находящийся под курсором мыши. Мне нужно получить координаты ячейки (X, Y) этого узла.

1 Ответ

4 голосов
/ 18 ноября 2009

Вы можете получить координаты любого узла с помощью метода GetDisplayRect. Кроме того, InvalidateNode сообщит вам координаты узла, который вы только что сделали недействительным.

Для ваших целей, я не думаю, что вам нужно знать координаты любого произвольного узла. Вместо этого вам нужно знать, когда вы рисуете узел, является ли этот узел горячим. Все специфичные для узла события рисования владельца сообщают вам как текущий узел, так и координаты, за исключением OnPaintText, который только сообщает вам об узле. Тем не менее, нет необходимости отслеживать текущий горячий узел самостоятельно. Просто проверьте, можно ли Node = Sender.HotNode определить, какой стиль использовать для рисования узла и его текста.

Возможно, вам удастся избежать всей проблемы. В элементе управления уже имеется достаточное количество кода, специфичного для горячих узлов, поэтому может потребоваться найти свойства, которые нужно настроить, вместо того, чтобы рисовать все самостоятельно.

...