18.3.19. TComboBoxEx - список выбора с расширенными возможностями

Этот компонент впервые введен в версии 6. По сравнению с TCоmboBох (см. п. 18.1.11) он способен рисовать слева от элемента списка небольшое изображение и выводить элемент с заданным отступом от левого края списка (рис. 18.34). Кроме того, с каждым элементом можно связать указатель на произвольные данные, размещенные в динамической памяти.

Рис. 18.34 . Пример использования компонента ТСотbоВохЕх

Специфичные свойств а компонента:

property Images: TCustomImageList;

Определяет объект-хранилище изображении

property ItemsEx: TComboExItems;

Определяет строки списка выбора

property MaxLength: Integer;

Определяет максимальное количество символов, которые пользователь может ввести в окне редактора

type TComboBoxExStyle = (csExDropDown, csExSimple, csEx-DropDownList) ; property Style: TComboBoxExStyle;

Определяет стиль компонента: csExDrop-Down с кнопкой раскрытия списка и возможностью ручного ввода текста; csExSim-ple - без кнопки (список всегда раскрыт), высота списка определяется свойством Height; csExDropDownList -с кнопкой раскрытия списка, но пользователь не может ввести текст выбора вручную

 Строки ItemsEx списка выбора определяет класс TComboExItems, имеющий такие свойства:

property Comboltems[const Index: Integer]: TComboExItem; property Items[const Index: Integer] : TListControlItem; default; type TLi'stItemsSortType = (stNone, stData, stText, stBoth); property SortType: TSortType;

Класс TListControlItem имеет три специфичных свойства: caption (String), Data (Pointer) И Imagelndex (integer), с помощью которых описываются текст элемента, а также связанные с ним данные и индекс изображения. Для установки значений этих свойств используются методы SetCaption, SetData И Setlmagelndex класса TListControlItem.

Класс TComboExitem, с помощью которого описываются строки списка в целом, имеет такие свойства:

property Caption: Strings-property Data: Pointed;

Текст элемента выбора Указатель на связанные с элементом данные

property Imagelndex: Timagelndex;

Индекс изображения для невыбранного элемента

property Indent: Integer;

Отступ элемента от левого края списка

property Overlaylmagelndex: Timagelndex;

Индекс изображения-маски

property SelectedlmageIndex: Timagelndex;

Индекс изображения для выбранного элемента

Нетрудно заметить, что свойства Caption, Data и Imagelndex дублируют одоименные свойства класса TListControlltem. Свойство Overlaylmagelndex ссылается на черно-белый растр, который накладывается на изображения Imagelndex И Selectedlmagelndex. Этопозволяет реализовать разного рода анимационные эффекты при выводе изображений.