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