Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Как загрузить иконку из dll


Автор: ByAlex 30.4.2012, 15:45
Здравствуйте. Ребят, помогите. Нужно загрузить ресурс в компонент TImage, допустим 1.ico, из посторонней dll. Зарание большое спасибо))

Автор: Alexeis 30.4.2012, 15:59
http://forum.vingrad.ru/topic-221521.html

Предварительно загрузить Dll при помощи LoadLibrary и подставить полученный адрес вместо HInstance.

Автор: ByAlex 30.4.2012, 16:18
Alexeis, спасибо)) пошёл пробовать))

Добавлено @ 16:30
Делаю всё как описано выше по ссылке. Ничего не выходит. Может где-то ошибка?


Код

procedure TForm3.Button1Click(Sender: TObject);
var a: TIcon;
begin
HInstance:=LoadLibrary('smp_icon.dll');
  a := TICon.Create;
  a.Handle := LoadIcon(HInstance, '1.ico');
  SpeedButton1.Glyph.Height := a.Height;
  SpeedButton1.Glyph.Width := a.Width;
  SpeedButton1.Glyph.Canvas.Draw(0, 0 , a);
  a.free;
end;


Автор: Alexeis 30.4.2012, 16:49
Цитата(ByAlex @  30.4.2012,  17:18 Найти цитируемый пост)
Делаю всё как описано выше по ссылке. Ничего не выходит. Может где-то ошибка?

Причин может быть несколько.
  Иконка занесена в неправильную секцию, имя ресурса неверное или dll не находит.

   А зачем записывать в переменную HInstance ? Создай свою типа HMODULE.

Автор: ByAlex 30.4.2012, 17:12
Вроде всё правильно делаю, библиотеки разные брал.
Alexeis, пожешь написать пример с загрузкой, а то я что-то недопонял?

Автор: Alexeis 30.4.2012, 21:20
Код

procedure TForm9.SpeedButton1Click(Sender: TObject);
var
 h : HMODULE;
 a: TIcon;
begin
  h := LoadLibrary('Shell32.dll');
  a := TICon.Create;
  a.Handle := LoadIcon(h, PWideChar(Integer(3)));
  SpeedButton1.Glyph.Height := a.Height;
  SpeedButton1.Glyph.Width := a.Width;
  SpeedButton1.Glyph.Canvas.Draw(0, 0 , a);
   a.free;
end;

Автор: ByAlex 1.5.2012, 05:20
Alexeis, спасибо)) всё получилось))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)