Загрузить GIF из ресурса в динамическую форму - PullRequest
1 голос
/ 20 октября 2010

У меня есть этот кусок кода:

SELDR_WH := FindControl(FindWindow(nil,'PhoneDB Filtering')) as TForm;
 if seldr_wh <> nil then
  begin
    SELDR_WH.ClientHeight := SELDR_WH.ClientHeight + 20;
    gif := TGIFImage.Create;
    with gif do begin
      Parent := SELDR_WH;
      Top := SELDR_WH.ClientHeight - 20;
      Left := 30;
      try
        rs := TResourceStream.Create( hInstance, 'ajax-loader', RT_RCDATA );
        gif.LoadFromStream(rs);
      except on Exception do begin
          rs.free;
          gif.free;
        end;
      end
    end;
  end;

Код довольно очевиден, я думаю. Никаких объяснений ...

Но - проблема в том, что я не могу загрузить этот ресурс GIF в компонент gif -> EResNotFound ...

Проблема в параметре hInstance, как указано здесь: http://www.codeproject.com/Messages/931171/Re-The-difference-between-HWND-and-HINSTANCE.aspx

Но - как его загрузить? Эффект неудачной загрузки заключается в том, что основная форма установлена ​​как дочерняя форма формы SELDR (SELDR_WH).

Любая помощь приветствуется. Спасибо!

Ответы [ 3 ]

4 голосов
/ 21 октября 2010

попробуйте проверить, правильно ли установлено изображение GIF.Я думаю, вам нужно добавить ajax-loader.gif к вашему ресурсу.затем назовите его с помощью ajax-загрузчика с типом RT_RCDATA.как это сделать, зайдите в Project> Resources> добавьте файл, идентификатор ресурса = ajax-loader Type = RT_RCDATA.это обязательно сработает.Я проверил это.ваш код работает нормальноесли он внешний, убедитесь, что вы сначала загрузили resource.dll.или, может быть, проблема не в этом ..

только загрузка изображений работает нормально

0 голосов
/ 20 октября 2010

Вы захотите изменить способ ссылки RT_RCDATA.Этот метод работает для меня:

rs := tResourceStream.Create(hInstance,'imgname', MakeIntResource(RT_RCDATA));
0 голосов
/ 20 октября 2010

1) Где находится ваш код?

hInstance получит ресурс из файла .exe текущего процесса. Короче говоря, hInstance является общим для всего exe, независимо от того, какую форму вы используете в нем.

Таким образом, ресурс 'ajax-loader' должен находиться в .exe, который содержит этот код.

2) Хорошо ли создан ваш ресурс?

Используйте обозреватель ресурсов, чтобы составить список ресурсов внутри вашего exe-файла. Вы должны сопоставить имя ресурса (то есть «ajax-loader») и тип ресурса, который должен быть установлен в значение 10. Например, ваш файл .rc должен выглядеть так:

ajax-loader 10 "ajax-loader.gif"

Я не уверен, что в имени ресурса разрешен символ '-', но я думаю, это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...