Информационные технологииStfw.Ru 🔍

Расширенный комбинированный список TComboBoxEx

ГЛАВА 5. Элементы управления Win32
🕛 14.11.2006, 14:27
Такой выпадающий список знаком пользователям со времен 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. Это - множество из четырех флагов, установка которых сводится к разрешению или запрету перечисленных выше новых свойств.

Cамоучитель по Delphi   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉