Подсказка обновления Virtual TreeView внутри ячейки при перемещении мыши - PullRequest
2 голосов
/ 21 марта 2011

Я использую TVirtualStringTree в качестве сетки, которая работает довольно хорошо.

Я использую функцию подсказок в виде дерева, чтобы показать подсказку, когда пользователь наводит указатель мыши на ячейку. Мне пришлось изменить HintMode на hmHint, так как я хочу, чтобы мои подсказки появлялись независимо от длины текста в ячейке.

Теперь я пытаюсь отобразить другую подсказку в зависимости от длины подсказки.о местонахождении мыши находится внутри клетки.

Я могу сделать это без проблем, пока подсказка не отобразится с помощью события OnGetHint.Моя проблема в том, что это событие возникает только в следующий раз, когда пользователь перемещает мышь в другую ячейку.

Я не могу найти способ обновить подсказку, пока она отображается, а мышьпереместился в ту же ячейку

Я рассмотрел предложения по другим элементам управления, используя событие OnShowHint приложения, но они просто заставляют подсказку исчезнуть и больше не показываться.

Кто угодноесть какие-нибудь идеи?

Спасибо

Обновление

После некоторого исследования я обнаружил, что если кто-то поможет найти решение:

Метод CMHintShow устанавливает в поле CursoRect записи HintInfo границы ячейки.Кажется, это останавливает VCl от повторного запуска кода подсказки до тех пор, пока мышь не выйдет из этого прямоугольника (TApplication.HintMouseMessage).

Если я установлю CursorRect на значение, меньшее границы ячейки, подсказка будет обновлена.Я использую VT в нескольких местах для разных целей, поэтому я не могу вносить эти изменения напрямую.Было бы хорошо получить решение, которое не требует этого изменения.

1 Ответ

1 голос
/ 22 марта 2011

В TBaseVirtualTree.CMHintShow прямо вверху, код гласит:

if PtInRect(FLastHintRect, HintInfo.CursorPos) then
  Exit;

Если вы прокомментируете это, то поведение будет ближе к тому, что вы ищете. Окно подсказок больше не будет отображаться, если вы перемещаете мышь в пределах одной и той же ячейки, но если вы щелкнете, то это будет.

Кажется, я не могу найти способ показать окно подсказки в той же ячейке без щелчка мышью!

...