Осуществление OnStateIconClick в TListView |
![]() |
![]() |
Статьи |
Управление TListView в Delphi отображает список пунктов в столбцах с заголовками столбца и подпунктами вертикально или горизонтально с маленькими или большими иконками / изображениями. Каждый элемент в представлении списка может иметь иконку рядом с собой. Список иконок определяется свойством SmallImages (или LargeImages). Далее, свойство StateImages определяет дополнительные изображения, которые будут отображаться рядом с каждым элементом в представлении списка. Каждый элемент в списке Items может быть связан с изображением, устанавливая его свойство StateIndex. Изображение состояния появляется слева от нормального пункта списка. Стиль Radio для выбора пунктовДопустим, нужен способ позволить пользователю Выбирать / Отмечать / Помечать один элемент из списка. Не получается использовать свойство Selected, поскольку может быть такая ситуация, когда один пункт должен быть Выбран, тогда как другой Отмечен. Свойство CheckBoxes не помогает. CheckBoxes позволяет отмечать несколько пунктов одновременно. Но нужно создать кое-что, подобно RadioGroup, где только один пункт списка будет отмечен одновременно. А также некоторые пункты были бы non-chekable. И вот что нужно сделать:
В событии OnClick ScreenToClient конвертирует координаты позиции мыши в координаты TListView. GetHitTestInfoAt определяет какие элементы списка находятся под мышью. Если пользователь нажал на значок состояния, включается htOnStateIcon в результате GetHitTestInfoAt. Ну все, пробуйте... |