Самоучитель по Delphi 7 для профессионалов



Компонент TlmageList - часть 2


Такие картинки удобно использовать и в собственных программах. Кроме того, со времен 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:

{$R bitmap.res}

4. Теперь картинка содержится в ресурсах и будет включена в состав исполняемого файла. Осталось загрузить ее в компонент TimageList. Для этого используется метод ResourceLoad:

ImageListl.ResourceLoad(rtBitmap, 'bitmaps',TColor(0));

При этом произойдет автоматическая "нарезка" картинок в соответствии со свойствами width и Height. Если размер большой картинки, к примеру, 256x16 пикселов, а ширина, заданная свойством TimageList, равна 16 пикселам, то в список будут включены 16 элементов размером 16x16. Поэтому еще во время разработки нужно правильно настроить размеры в компоненте TimageList, иначе после загрузки ресурса картинки будут разрезаны как попало.

Есть и другой метод загрузки — FileLoad:

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

Аналогичным путем он позволяет загружать картинки из любого пригодного файла. Но загрузка из файла менее надежна — нет гарантии, что у пользователя вашего приложения нужный файл всегда находится на месте и он не изменен.




Содержание  Назад  Вперед