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

Проблема с ресурсами и компонентом в Delphi: Дизайн vs Код

Delphi , Файловая система , Ресурсы

Вопрос, заданный пользователем, связан с проблемой, когда при попытке использования нового компонента в дизайне формы в среде разработки Delphi возникает ошибка "Resource not found". Компонент основан на sAlphaButton и имеет свойство ImageList, а также расширенные изображения и подписи, переведенные на венгерский язык. Для загрузки изображений используется функция LoadRes. Компонент работает корректно, когда используется в коде, но при регистрации и попытке поместить его на форму возникает указанная ошибка.

Пример кода компонента

Код компонента включает процедуры LoadAsImageListFromRes и LoadResToImageList, которые загружают изображения из ресурсов. Конструктор TScrollPNGButton.Create инициализирует ImageList и загружает ресурсы при создании компонента.

procedure TScrollPNGButton.LoadAsImageListFromRes(ResNames : TStrings; IL : TsAlphaImageList);
var
    s : string;
    i : integer;
begin
    IL.Clear;
    for i := 0 to ResNames.Count - 1 do begin
        s := ResNames[i];
        AddImageFromRes(hInstance, IL, s, ifPNG);
    end;
end;

procedure TScrollPNGButton.LoadResToImageList;
var
    sl : TStringList;
begin
    sl := TStringList.Create;
    try
        sl.Text := ...; // Список имен ресурсов
        LoadAsImageListFromRes(sl, FImgs);
    finally
        sl.Free;
    end;
end;

constructor TScrollPNGButton.Create(aOwner : TComponent);
begin
    inherited Create(aOwner);
    FImgs := TsAlphaImageList.Create(nil);
    inherited Images := FImgs;
    LoadResToImageList;
end;

Описание проблемы

При использовании компонента в дизайне формы в среде Delphi появляется ошибка, указывающая на отсутствие ресурса scrollpngbutton_ok. Пользователь уточняет, что при работе с кодом компонент функционирует корректно, и предполагает, что проблема может быть связана с неудачной регистрацией или созданием компонента.

Альтернативное решение

Пользователь упоминает, что может использовать метод Loaded для установки изображений в дизайне, но этот метод не вызывается во время выполнения программы.

Комментарии и дополнительная информация

В комментариях упоминается, что TsAlphaButton - это компонент из библиотеки AlphaSkin, и проблема может быть связана с использованием hInstance, которое не соответствует hInstance пользователя. После исправления кода ошибка исчезает.

Подтвержденный ответ

В ответе подтверждается, что использование директивы {$R *.res} не является правильным решением. Создание собственного файла ресурсов (YourResources.rc) и его компиляция (или использование IDE для этого, если используется Delphi 7 или более поздняя версия) является правильным подходом.

{$R YourResources.res YourResources.rc}

В файле YourResources.rc необходимо указать ресурсы, которые будут использоваться компонентом.

/* YourResources.rc */
SCROLLPNGBUTTON  BITMAP MyBitmap.bmp

Заключение

При работе с компонентами в Delphi, особенно когда они используют ресурсы, важно правильно их загружать и обращаться с hInstance. Создание и правильное использование файла ресурсов является ключом к успешной интеграции компонентов в дизайне формы и их корректной работе в коде.

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

Проблема связана с некорректной регистрацией и использованием ресурсов компонента в среде разработки Delphi, что приводит к ошибке 'Resource not found' при попытке использовать его в дизайне формы.


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

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




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


:: Главная :: Ресурсы ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 23:51:55/0.0035278797149658/0