В мире разработки под Delphi и Pascal, с появлением FireMonkey (FMX), разработчики столкнулись с необходимостью искать новые способы хранения изображений, так как компонент ImageList, знакомый по VCL, в FMX отсутствует. В этой статье мы рассмотрим, как можно хранить изображения в FireMonkey для использования в дальнейшем.
Проблема
В VCL для хранения изображений использовался компонент ImageList. В FireMonkey такого компонента нет, и это вызывает вопрос: как же хранить изображения в FMX для последующего использования?
Решение
Использование ресурсов
Один из подходов заключается в добавлении изображений в проект как ресурсов. Это можно сделать через меню Project -> Resources and Images. Изображения можно загружать в приложение, используя поток ресурсов, как показано в примере кода:
procedure TForm1.Button1Click(Sender: TObject);
var
InStream: TResourceStream;
begin
InStream := TResourceStream.Create(HInstance, 'MyPng', RT_RCDATA);
try
Image1.Bitmap.LoadFromStream(InStream);
finally
InStream.Free;
end;
end;
Общий доступ к изображениям
Для управления общим доступом к изображениям на уровне приложения, можно использовать процедуры для загрузки изображений из ресурсов, как в следующем примере:
Затем, изображения можно загружать в любом месте приложения, используя эту процедуру:
var
Index: NativeInt;
begin
Index := 1;
LoadImageFromResource(Image1, 'Bitmap_' + IntToStr(Index));
end;
ZImageList в Delphi XE8 и выше
С версии Delphi XE8, в FireMonkey появился компонент TImageList, который можно использовать как аналог ImageList в VCL. Это позволяет разработчикам использовать знакомый подход к управлению изображениями в FMX.
Заключение
Хранение изображений в FireMonkey требует от разработчиков пересмотра подходов, используемых в VCL. Ресурсы и компонент TImageList (доступный начиная с Delphi XE8) предоставляют эффективные способы хранения и использования изображений в приложениях FMX. Применение этих методов позволит разработчикам продолжать создавать современные и функциональные приложения, используя возможности FireMonkey.
Статья рассматривает альтернативные методы хранения изображений в FireMonkey, так как в этом фреймворке отсутствует компонент `ImageList` из VCL.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS