Cześć. Mam problem, i to domyć dla mnie denerwujący, ponieważ chcę wstawić do ListView'a ikone 32 bitową, ale najpierw ją wyciągnąć z pliku exe:
var
item: tlistitem;
icon: ticon;
FileInfo: SHFILEINFO;
begin
item := listview1.items.add;
item.caption := 'test';
item.subitems.text := 'bla bla';
SHGetFileInfo(PChar('C:\Program Files\Mozilla Firefox\firefox.exe'), 0, FileInfo,
SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
icon := ticon.Create;
icon.Handle := FileInfo.hIcon;
item.ImageIndex := ImageList3.AddIcon(icon);
DestroyIcon(FileInfo.hIcon);
Icon.Free;
end;
Tylko, że ten kod tworzy mi ikonę 256 klorową i wygląda to jak... Czy da się coś z tym zrobić ?
Znalazłem szybsze rozwiązanie, może teraz będzie łatwiej, ale i tak przyniosi taki sam efekt, ikone 256 kolorową :/
var
item: tlistitem;
i: hicon;
begin
item := listview1.items.add;
item.caption := 'test';
item.subitems.text := 'C:\test.exe';
i := ExtractIcon(HInstance, PChar('C:\Program Files\Mozilla Firefox\firefox.exe'), 0);
icon := ticon.Create;
icon.Handle := i;
item.ImageIndex := ImageList3.AddIcon(icon);