Підключення файлу ресурсів
Щоб ресурси були доступні програмі, необхідно до тексту програми включити інструкцію (директиву), яка повідомить компілятору, що файл виконуваної програми слід додати вміст файлу ресурсів.
Загалом ця директива виглядає так:
де ФайлРесурсів - ім'я файлу ресурсів. Наприклад, директива може мати такий вигляд:
Директиву включення файлу ресурсів файл виконуваної програми зазвичай поміщають на початку тексту модуля.
Якщо імена файлу модуля програми та файлу ресурсів збігаються, замість імені файлу ресурсів можна поставити "*". У цьому випадку директива включення файлу ресурсів у файл програми, що виконується, виглядає так:
Завантажити картинку з ресурсу до змінної типу TBitMap можна за допомогою методу LoadFromResourceName, який має два параметри: ідентифікатор програми та ім'я ресурсу. Як ідентифікатор програм ми використовується глобальна змінна Hinstance. Ім'я ресурсу має бути представлене у вигляді рядкової константи.
Наприклад, інструкція завантаження зображення в змінну Pic може виглядати так:
Як приклад у лістингу 10.11 наведено текст програми, в якій зображення тла та літака завантажується з ресурсів.
Листинг 10.11. Приклад завантаження картинок із ресурсу
// увімкнути файл ресурсівinterface
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;
procedureFormActivate(Sender: TObject);
procedureTimer1Timer(Sender: TObject);
procedureFormClose(Sender: TObject;
varAction: TCloseAction);private
Back, bitmap, Buf: TBitMap;
// тло, картинка, буфер
BackRct, BufRet: TRect;
// область фону, картинки, буфера
// координати лівого верхнього кута картинки
W, H: integer; // Розміри картинки
procedureTForm1.FormActivate(Sender: TObject);
Back := TBitmap.Create; // тло
bitmap := TBitmap.Create; // картинка
Buf: = TBitmap.Create; // буфер
// завантажити з ресурсу фон
// завантажити з ресурсу картинку, яка рухатиметься
// Створити буфер для збереження копії області фону, на яку
Buf.Palette: = Back.Palette; // Щоб забезпечити відповідність палітр !!
// визначимо область фону, що зберігається
BackRct:=Bounds(x,y,W,H); // і збережемо її
procedureTForm1.Timer1Timer(Sender: TObject);
// Відновленням фону (з буфера) видалимо малюнок Form1.image1.canvas.Draw (x, y, Buf);
// визначимо область фону, що зберігається
// Збережемо її копію
procedure TForm1.FormClose(Sender: TObject;
varAction: TCloseAction);
Переваги завантаження картинок з ресурсу програми очевидні: при розповсюдженні програми не потрібно піклуватися про те, щоб під час роботи програми були доступні файли ілюстрацій, всі необхідні програмі картинки знаходяться у файлі, що виконується.