Обычно это может быть сделано при помощи указателя функции, который является специальной переменной, которая указывает на ячейку памяти функции. Можно тогда использовать это для вызывания функции с определенными аргументами. Таким образом, вероятно, будет функция, которая устанавливает функцию обратного вызова. Это примет указатель функции и затем сохранит тот адрес где-нибудь, где он может использоваться. После этого, когда указанное событие инициировано, оно вызовет ту функцию.
Пример текстового файла (с именем myres.rc):
MYPNG RCDATA mypng.png
Добавлен в проект:
{$R 'myres.res' 'myres.rc'}
Пример загрузки во время выполнения:
uses
PngImage;
var
Png: TPngImage;
begin
Png := TPngImage.Create;
try
Png.LoadFromResourceName(HInstance, 'MYPNG');
Image1.Picture.Graphic := Png; // Image1: TImage on the form
finally
Png.Free;
end;
end;
Если вы используете Delphi 2009, TImage должен сохранить ваш файл PNG как PNG в файле DFM. DFM будет больше, так как двоичное содержимое свойства Picture.Data объекта TImage закодировано в DFM как шестнадцатеричный текст. Но когда DFM компилируется в ваш EXE, он компилируется в двоичный ресурс. Ваше изображение должно занимать такое же пространство внутри ресурса формы RCDATA, как и сохранение PNG в собственном ресурсе RCDATA.
Я только что проверил это, открыв один из моих собственных файлов DFM Delphi 2009, в которых есть компонент TImage с PNG изображение загружается во время разработки в текстовом редакторе, копируя содержимое свойства Picture.Data и вставляя его в шестнадцатеричный редактор. Шестнадцатеричный редактор показывает мне, что в свойстве Picture.Data хранится фактический файл PNG с префиксом из 10 байтов. Первый байт равен $ 09, а следующие 9 байтов составляют TPngImage. Если я удалю эти 10 байтов и сохраню файл в шестнадцатеричном редакторе, я получу правильный файл PNG.
Поэтому, если вы используете Delphi 2009, просто загрузите изображение PNG в компонент TImage во время разработки.
очень похоже на мой пример: http://www.ciuly.com/index.php/delphi/article/delphi/7-multimedia/10-pngfromresource.html