Проблема: Нужно загрузить (png, jpg, ico) картинку, курсоры (cur) или другие файлы в виде ресурса. Для простоты реализуем загрузку png картинки.
Инструментарий: Delphi XE5, текстовый редактор(notepad, notepad++..)
Решение:
Для использования файла ресурса в программе, есть несколько вариантов, отличаются они только тем что в первом случае нужно делать все руками, во втором — можно сделать все то же, намного проще.
I способ (добавление ресурса)
- Создать файл ресурса (простой текстовый файл с расширением *.rc), к примеру ImgRes.rc
- Занести список файлов, которые нужно будет использовать в программе (список вносится в определенном формате: «Название ресурса» «Название блока где будет размещен ресурс (RCDATA)» «расположение и название файл»)
HELP RCDATA «..\IMG\help.png»
- Создадим файл с расширением *.bat со следующим содержимым:
brcc32.exe ImgRes.rc
где
brcc32.exe — утилита которая расположена в установленной папке Delphi\BIN
ImgRes.rc — файл со списком ресурсов
- Запускаем наш созданный *.bat файл, после чего создастся файл ImgRes.RES
- Подключить модуль ресурса к программе (в исходном тексте… )
{$R 'ImgRes.res'}
II способ (добавление ресурса)
- В Delphi открыть пункт меню Project -> Resources and Images (Рис. 1)
- В появившемся окне (Рис. 2) нажимаем кнопку Add
- В появившемся окне выбираем файл с картинкой или тот файл что вы хотите загрузить с ресурса
- В поле Resource Identifer нужно написать название имя ресурса (В моем примере это Resource Identifer = HELP. (Рис.3))
- Если ресурсов нужно загрузить несколько — возвращаемся к пункту 2
- Жмем ОК
Использование ресурса в программе
uses
PngImage;
...
var
Png: TPngImage;
begin
Png := TPngImage.Create;
try
Png.LoadFromResourceName(HInstance, 'HELP');
Img1.Picture.Graphic := Png; // Img1: TImage на форме
finally
Png.Free;
end;
end;
PS: Исходник проекта можно посмотреть и скачать на github. В репозитории находится две папки, которые содержат первый и второй способ работы с ресурсами. В папке ResFile — реализация первого метода, в папке ResFromManager реализация второго метода загрузки ресурса.