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

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

Сейчас я пытаюсь отобразить другую подсказку в зависимости от того, где находится мышь в ячейке.

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

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

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

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

Благодарность

Обновить

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

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

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

2
Jamie 21 Мар 2011 в 23:05

1 ответ

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

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

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

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

1
David Heffernan 22 Мар 2011 в 01:03
См. мое редактирование выше в отношении того, почему подсказка больше не будет отображаться
 – 
Jamie
22 Мар 2011 в 13:50