![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Иконки
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(подробнее в хелпе)