Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление Ошибки "Resource not Found" при Работе с Битмапами в Delphi

Delphi , Компоненты и Классы , Компоненты

При разработке компонентов на Delphi, зачастую возникает необходимость использования битмапов. В случае с кнопкой, которую пользователь не должен иметь возможность изменять, задача заключается в том, чтобы заранее задать изображение для компонента, а не предоставлять возможность выбора через свойство ImageList. Ошибка "Resource not found" может возникнуть при попытке доступа к ресурсу, который был добавлен в файл ресурсов, но не был корректно скомпилирован или загружен.

Шаги для Исправления Ошибки:

  1. Создание файла ресурсов: Сначала необходимо создать файл ресурсов myres.rc с указанием битмапа, который вы хотите включить в свой компонент:

rc FIXED BITMAP "fixed.bmp"

Важно обратить внимание на тип ресурса - он должен быть BITMAP, а не BMP.

  1. Компиляция файла ресурсов: После создания файла ресурсов, необходимо его скомпилировать с помощью утилиты brcc32:

brcc32 myres.rc

  1. Включение файла ресурсов в компонент: В разделе implementation вашего компонента укажите путь к скомпилированному файлу ресурсов:

pascal implementation {$R .\resources\myres.res}

  1. Доступ к ресурсу: Для загрузки битмапа из ресурса используйте следующий код:

pascal MyComponent.Glyph.LoadFromResourceName(FindClassHInstance(MyComponent), 'FIXED');

Здесь FindClassHInstance(MyComponent) обеспечивает корректный доступ к ресурсу, независимо от настроек проекта, в котором используется компонент.

  1. Проверка корректности загрузки: Если вы обнаружите, что ресурс загружается с именем "0", это может указывать на проблему с компиляцией файла ресурсов. Убедитесь, что формат битмапа соответствует стандарту (например, начинается с 'BM8').

Пример Кода:

unit MyButtonComponent;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.SysMenus, Vcl.Dialogs, Vcl.StdCtrls;

type
  TMyButton = class(TSpeedButton)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R .\resources\myres.res} // Подключение скомпилированного файла ресурсов

procedure TMyButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  // Загрузка битмапа при создании компонента
  Glyph.LoadFromResourceName(FindClassHInstance(Self), 'FIXED');
end;

initialization
  // Здесь может быть код инициализации, если необходимо
end.

Заключение:

Используя вышеуказанные шаги, вы сможете исправить ошибку "Resource not found" и корректно загрузить битмап в свой компонент на Delphi. Обратите внимание на формат файла битмапа и правильность указания типов ресурсов в файле myres.rc.

Создано по материалам из источника по ссылке.

Вопрос связан с исправлением ошибки 'Resource not Found' в программировании на Delphi при работе с битмапами, когда необходимо загрузить изображение для компонента без возможности его изменения пользователем.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Компоненты ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-16 03:18:19/0.0035359859466553/0