Я использую TVirtualStringTree в качестве сетки, которая работает очень хорошо.
Я использую функцию подсказки древовидных представлений, чтобы показать подсказку, когда пользователь наводит указатель мыши на ячейку. Мне пришлось изменить HintMode на hmHint, так как я хочу, чтобы мои подсказки отображались независимо от длины текста в ячейке.
Сейчас я пытаюсь отобразить другую подсказку в зависимости от того, где находится мышь в ячейке.
Я могу сделать это без проблем до отображения подсказки с помощью события OnGetHint. Моя проблема в том, что это событие возникает только в следующий раз, когда пользователь перемещает мышь в другую ячейку.
Я не вижу способа обновить подсказку, когда она отображается, а мышь перемещается в пределах одной и той же ячейки
Я просмотрел предложения для других элементов управления, используя событие Application OnShowHint, но, похоже, они просто заставляют подсказку исчезнуть и больше не отображаться.
У кого-нибудь есть идеи?
Благодарность
Обновить
После некоторого расследования вот что я нашел на случай, если это поможет кому-то найти решение:
Метод CMHintShow устанавливает для поля CursoRect записи HintInfo границы ячейки. Кажется, это мешает VCl снова запускать код подсказки, пока мышь не выйдет из этого прямоугольника (TApplication.HintMouseMessage).
Если я установлю CursorRect на что-то меньшее, чем границы ячейки, подсказка будет обновлена. Я использую VT в нескольких местах для разных целей, поэтому я не могу вносить эти изменения напрямую. Было бы хорошо получить решение, которое не требует этого изменения.
1 ответ
В TBaseVirtualTree.CMHintShow
прямо вверху код гласит:
if PtInRect(FLastHintRect, HintInfo.CursorPos) then
Exit;
Если вы прокомментируете это, то поведение будет ближе к тому, что вы ищете. Окно подсказки больше не будет отображаться, если вы переместите мышь в ту же ячейку, но если вы нажмете, оно появится.
Кажется, я не могу найти способ сделать так, чтобы окно подсказки отображалось в той же ячейке без этого щелчка мыши!
Похожие вопросы
Новые вопросы
delphi
Delphi - это язык для быстрой разработки собственных приложений для Windows, macOS, Linux, iOS и Android с использованием Object Pascal. Название относится к языку Delphi, а также к его библиотекам, компилятору и IDE, которые используются для помощи в редактировании и отладке проектов Delphi.