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. Этопозволяет реализовать разного рода анимационные эффекты при выводе изображений.