Delphi для профессионалов. Элементы управления Win32
Расширенный комбинированный список TComboBoxEx
Такой выпадающий список знаком пользователям со времен Windows 95 (например, список всех элементов оболочки
Shell: папки My Computer, My Documents и т. п.) Соответствующий элемент управления появился в библиотеке ComCtl32 несколько позже, а в компонент он превратился только в Delphi 7.
Что отличает этот "продвинутый" выпадающий список от обычного
TCоmbоВох? С функциональной точки зрения основных отличий два: возможность добавлять картинки к элементам и выравнивать последние с разным отступом, имитируя иерархию.
Реализовано это следующим образом.
У компонента TComboBoxEx, помимо свойства
items, есть свойство
property ItemsEx: TComboExItems;
которое представляет собой коллекцию элементов типа
TComboExitem. Щелкнув на этом свойстве в Инспекторе объектов, увидим типичный редактор коллекций, где каждый элемент обладает такими опубликованными свойствами:
свойство
Caption отвечает за заголовок элемента, каким он буден виден в списке;
свойство Data —
это нетипизированный указатель на прикрепляемые к элементу данные;
отступ от левого
края списка задается свойством indent. В документации
написано, что оно задается в пикселах. Это почти так: на самом деле одна единица
значения свойства соответствует десятку пикселов;
три номера картинок:
обычный imageindex, номер для выбранного элемента
Selected Imageindex И Overlaylmagelndex. Последнее
свойство задает номер картинки, используемой как накладываемая маска для первых
двух. Она должна быть черно-белой: белые области прозрачны для исходной картинки,
черные — нет. Все три индекса указывают на один и тот же список картинок,
задаваемый свойством images родительского компонента.
Дополнительные опции в расширенном выпадающем списке задаются свойством
styleEx. Это — множество из четырех флагов, установка которых сводится к разрешению или запрету перечисленных выше новых свойств.
Знаете ли Вы, что абстракция через параметризацию - это прием программирования, позволяющий, используя параметры, представить фактически неограниченный набор различных вычислений одной программой, которая есть абстракция этих наборов.