Delphi для профессионалов



 

Категория 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;