Delphi работа с ресурсами

Проблема: Нужно загрузить (png, jpg, ico) картинку, курсоры (cur) или другие файлы в виде ресурса. Для простоты реализуем загрузку png картинки.
Инструментарий: Delphi XE5, текстовый редактор(notepad, notepad++..)
Решение:
Для использования файла ресурса в программе, есть несколько вариантов, отличаются они только тем что в первом случае нужно делать все руками, во втором — можно сделать все то же, намного проще.

I способ (добавление ресурса)

  1. Создать файл ресурса (простой текстовый файл с расширением *.rc), к примеру ImgRes.rc
  2. Занести список файлов, которые нужно будет использовать в программе (список вносится в определенном формате: «Название ресурса» «Название блока где будет размещен ресурс (RCDATA)» «расположение и название файл»)

HELP RCDATA «..\IMG\help.png»

  1. Создадим файл с расширением *.bat со следующим содержимым:

brcc32.exe ImgRes.rc

где
brcc32.exe — утилита которая расположена в установленной папке Delphi\BIN
ImgRes.rc — файл со списком ресурсов

  1. Запускаем наш созданный *.bat файл, после чего создастся файл ImgRes.RES
  1. Подключить модуль ресурса к программе (в исходном тексте… )

{$R 'ImgRes.res'}

II способ (добавление ресурса)

  1. В Delphi открыть пункт меню Project -> Resources and Images (Рис. 1)
  2. В появившемся окне (Рис. 2) нажимаем кнопку Add
  3. В появившемся окне выбираем файл с картинкой или тот файл что вы хотите загрузить с ресурса
  4. В поле Resource Identifer нужно написать название имя ресурса (В моем примере это Resource Identifer = HELP. (Рис.3))
  5. Если ресурсов нужно загрузить несколько — возвращаемся к пункту 2
  6. Жмем ОК
Рисунок 1 - Меню Resources and Images...

Рисунок 1 — Меню Resources and Images…

Рисунок 2 - Resources and Images...

Рисунок 2 — Resources and Images…

Рисунок 3 - Resources and Images...

Рисунок 3 — Resources and Images…

Использование ресурса в программе

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 реализация второго метода загрузки ресурса.

Добавить комментарий