Компонент TlmageList

Зі зростанням можливостей користувальницького інтерфейсу Windows все більше і більше елементів керування стали оснащуватися значками та картинками. І ось для централізованого керування цими картинками з'явився елемент керування TImageList. Він являє собою оболонку для створення та використання колекції однакових за розміром та властивостями зображень. На етапі розробки її "начиняють" картинками (з Delphi для цих цілей поставляється ціла добірка, що знаходиться в каталозі \Images). Компонент TImageList має дві властивості - Images І Imagelndex . Перше вказує на список (компонент TlmageList), друге - на конкретну картинку в цьому списку.

список

Мал. 5.2.Редактор списку зображень TImageList

Такі картинки зручно використовувати у своїх програмах. Крім того, з часів Delphi 3 відома наступна помилка розробників Microsoft: у різних версіях бібліотеки ComCtl32.dll запис та читання картинок при збереженні здійснювався по-різному; якщо ви заповнили список під час розробки, скомпілювали програму та запустили його на машині з іншою версією бібліотеки ComCtl32, цілком імовірно, що список виявиться порожнім.

1. Створити вихідний файл ресурсів, куди необхідно включити і назвати необхідні файли з розширенням bmp, наприклад:

inout BITMAP "inout.bmp"

tools BITMAP "tools.bmp"

Зберегти цей файл із розширенням rс, скажімо, bitmap.rс.

2. Скомпілювати ресурси за допомогою утиліти brcc32.exe, що поставляється з Delphi:

C:\Program Files\Borland\Delphi7\bin\brcc32 bitmap.rc

3. Файл bitmap.res, що з'явився, потрібно включити до складу проекту. Для цього використовується директива $R:

4. Тепер картинка міститься в ресурсах і буде включена до складу файлу, що виконується. Залишилосьзавантажити її в компонент TimageList. Для цього використовується метод ResourceLoad:

При цьому відбудеться автоматичне "нарізування" картинок відповідно до властивостей width і Height. Якщо розмір великої картинки, наприклад, 256x16 пікселів, а ширина, задана властивістю TimageList дорівнює 16 пікселів, то в список будуть включені 16 елементів розміром 16x16. Тому ще під час розробки потрібно правильно налаштувати розміри в компоненті TimageList, інакше після завантаження ресурсу картинки будуть розрізані абияк.

Є й інший метод завантаження - FileLoad :

function FileLoad(ResType: TResType; Name: string; MaskColor: TColor): Boolean;

Аналогічно він дозволяє завантажувати картинки з будь-якого придатного файлу. Але завантаження з файлу менш надійне - немає гарантії, що у користувача вашої програми потрібний файл завжди знаходиться на місці і він не змінений.

Var bmp: TBitmap;

У методі AddMasked потрібно другим параметром вказати "прозорий" (фоновий) колір, який у разі дорівнює bmp .TransparentColor .

Як елемент управлінняWin32,компоннет TimageList має власний дескриптор: