Отображение пользовательской подсказки в подпункте TListView |
![]() |
![]() |
Статьи |
Вы используете управление Delphi TListView, чтобы отобразить список элементов в режиме, подобном Проводнику Windows для отображения файлов и папок. Пункты могут быть отображены в столбцах с заголовками столбцов, вертикально или горизонтально, с маленькими или большими значками. ![]() Подсказка пунктов ListViewTListView имеет свойства Hint и ShowHint, которые Вы используете, чтобы определить, должна ли подсказка (tooltip) быть отображена для управления, когда мышь находится над ним. В большинстве случаев, при использовании вида списка, Вы будете нуждаться в подсказках, которые будут отображаться для каждого пункта списка. ListView имеет событие OnInfoTip, которое срабатывает, когда мышь зависает над пунктом в виде списка. По умолчанию, когда подсказки допускаются (ShowHint - True), список отображает подсказку, указанную его свойством Hint. OnInfoTip позволяет списку отменить это значение, чтобы определить подсказку, которая будет применяться к пункту под мышью. Когда ViewStyle установлен в vsReport, ListView отображает каждый элемент на отдельной строке с информацией (подпункты), размещенной в столбцах. К сожалению, OnInfoTip не срабатывает, когда мышь находится над подпунктом. Чтобы заставить ListView отобразить пользовательские подсказки над пунктами и подпунктами, Вы должны обработать два события: OnInfoTip и OnMouseMove. Пример обработки события OnInfoTip:
Чтобы показать подсказки для каждого подпункта, Вы должны обработать событие OnMouseMove:
После получения позиции мыши (Mouse.CursorPos), используя ScreenToClient, мы получаем позицию мыши в координатах ListView1. Посылая сообщение LVM_SUBITEMHITTEST списку, заполняем запись TLVHitTestInfo. Эта структура помогает нам найти: какой пункт или подпункт в этой позиции. Если мышь над подпунктом, мы активизируем окно подсказки, вызывая метод Application.ActivateHint. |