Категория List
В этой категории выделяются две группы действий. Первые пять из них (табл. 8.3) автоматизируют работу с выделенными элементами списков. Оставшиеся два — TStaticListAction И TVirtualListAction — требуют отдельного рассмотрения.
Таблица 8.3. Действия по работе с выделенными элементами списков
Действие |
Назначение |
TListControlSelectAll |
Выделяет все элементы списка. Активно, только если у списка свойство MultiSelect установлено в значение True |
TListControlClearSelection |
Отменяет выделение элементов в списке |
TListControlDeleteSelection |
Удаляет выделенные элементы |
TListControlCopySelection |
Копирует выделенные элементы списка в список Destination |
TListControlMoveSelection |
Переносит выделенные элементы списка в список Destination |
Действия работают с компонентом TListBox, а в среде Kylix — еще и с TListview (не путать с одноименным компонентом для Windows — он не годится для данной категории). Подходит также и TCоmbовох.
В отличие от многих других действий члены этой категории могут явно связываться с нужным вам списком. Если задано значение свойства Listcontrol, то все действия производятся над ним. Если нет, то выбирается активный список из числа имеющихся на форме.
Особняком стоят два действия — TStaticListAction И TVirtualListAction
По замыслу разработчиков они являются централизованными хранилищами элементов для многих списков. Причем элементы списка могут храниться сразу с заданными картинками (т. е. свойствами imageindex) и указателями на сопутствующие данные.
Дальнейшее просто — разработчик выбирает нужные компоненты TListBox, TComboBox и т. п. и в их свойстве Action указывает на действие — хранилище. Опубликовано свойство Action у компонента TCоmbовохЕх (впервые появившегося в Delphi 6). У остальных потомков TControl это свойство относится к группе видимости public, поэтому вы можете сделать присвоение при запуске приложения (в методе onCreate главной формы).
Если действие и компонент-список связаны, то должны происходить две вещи:
- при изменении текущего элемента в любом из компонентов происходит синхронное изменение во всех остальных;
- когда пользователь выбирает один из элементов списка, выполняется действие, связанное с этим списком, и вызывается метод-обработчик
type TItemSelectedEvent = procedure(Sender: TCustomListAction;
Control: TControi) of object;
property OnltemSelected: TItemSelectedEvent;