Delphi World - Як помістити картинки в ComboBox

Робиться це за допомогою стилю ownerdraw, який є у TComboBox. Нас цікавлять дві властивості цього стилю:
- csOwnerDrawFixed - використовується, якщо всі бітмапи мають однакову висоту
- csOwnerDrawVariable - використовується для бітмапів з різною висотою
Після того як стиль буде встановлений на один із вищеперелічених, то можна скористатися подією на DrawItem. Ця подія виникає щоразу, коли додатку необхідно намалювати пункт у списку (combo box). Подія визначається так:
Якщо списку, що випадає, був присвоєний стиль csOwnerDrawFixed, то все, що треба зробити, це написати процедуру, яка буде малювати бітмап і текст у події наDrawItem.
Для списку зі стилем csOwnerDrawVariable необхідно пройти ще одну додаткову стадію. Укладається ця стадія у створенні оброблювача для події наMeasureItem. Ця подія викликається перед DrawItem для того, щоб Ви могли встановити фактичну висоту для кожного елемента списку. Ось його визначення:
Від теорії до практики
Створіть нову програму. Розмістіть на формі combobox та imagelist (якщо Ви використовуєте delphi 1, то Вам доведеться зберігати бітмапи якимось іншим способом). У Object Inspector встановіть таківластивості:
ComboBox1 -> Style -> csOwnerDrawFixed -> Щоб ми могли контролювати малювання елементів.
ComboBox1 -> Items -> Тут можна додати будь-які рядки, які відображатимуться поруч із бітмапами. Щоб кожен елемент мав опис картинки.
На закінчення необхідно додати наступний код для події onDrawItem: