Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Иконки


Belov ©   (2002-01-17 17:38:00) 

Привет всем ! Не подскажите как запихнуть иконки в DLL и по требованию их вытащить


DK   (2002-01-19 02:40:00) [1]

Короче так:

procedure FillIcons(FileName: string; IconBox: TListView);
var
I, M: Integer;
FIcon: TIcon;
begin
FIcon := TIcon.Create;
IconBox.LargeImages.Clear;
M := ExtractIcon(hInstance, PChar(FileName), $FFFFFFFF);
for I := 0 to M - 1 do begin
FIcon.Handle := ExtractIcon(hInstance, PChar(FileName), I);
IconBox.LargeImages.AddIcon(FIcon);
with IconBox.Items do begin
Add;
Item[I].Caption := IntToStr(I);
Item[I].ImageIndex := I;
end;
end;
FIcon.Destroy;
end;


Эта процедура работает у меня безоговорочно.
Вызывается в OnCreateформы так:

IconList.LargeImages := TImageList.Create(IconList);
IconList.LargeImages.Width := 32;
IconList.LargeImages.Height := 32;
FillIcons(ParamStr(0), IconList);


IconList- компонент TListView
ParamStr(0)- файл с ресурсами-иконками (EXE или DLL)

Тоесть ты можешь вытащить иконки из любой проги (если они не упакованы) имея только её полный путь.


Fellomena   (2002-01-18 14:17:00) [2]

Сама не пробовала, но думаю получится:

// это твоя dll

{$R mydll.RES}

procedure ResOut();
var
MyRes1: TResourceStream;
begin
MyRes1:=TResourceStream.Create(hInstance, "MYDLL", RT_RCDATA);
try
// делаешь с ними что надо
Finally
MyRes1.Free;
end; {try}
end;


После компановки получаешь dll, которая содержит твои иконки, которые раньше были в mydll.RES
А из главной проги, загружающей саму dll обращаешься к процедуре ResOut();
Вроде должно работать 8)


Belov   (2002-01-18 13:56:00) [3]

Не понял
Ребят - можно как для дурака - поподробнее - желательно с примером, плиз


Cage   (2002-01-18 12:34:00) [4]

Метод, конечно, варварский, но можно и ResEditor"ом каким-нибудь. ResHack, например.


Belov   (2002-01-18 11:38:00) [5]

А после того как я подключил - загружать их
LoadIcon - ?


Anatoly Podgoretsky   (2002-01-18 09:37:00) [6]

Ну подключи к dll с помощью {$R *.res}


Belov   (2002-01-18 09:14:00) [7]

OK
С этим понятно - но все-таки касаемо DLL - как ?


DK   (2002-01-18 02:21:00) [8]

Подключи к проэкту файл ресурса (*.RC) с таким содержанием:

1 ICON [drive:\path\]name3.ico
2 ICON [drive:\path\]name3.ico
...

(номер тип путь)

Вытащить с помощью ExtractIcon(подробнее в хелпе)


Наверх

Титульная страница Поиск, карта сайта Написать письмо