Czy kotś wie dlaczego po wykonaniu kodu poniżej, zostaje wyświetlona tylko ikonka dla ostatniego pliku na liście. Czemu zostaje wyczyszczony systemowy IMAGELIST (bo to się chyba tu dzieje) i jak to ominąć.
Ja od tego zwariuję proszę, POMOCY!!!!
var
Ext : string;
Ico : PShFileInfo;
ImageListHandle: THandle;
i : integer;
SFI : TSHFileInfo;
begin
for i := 0 to ListView1.Items.Count - 1 do
begin
/// 1 wariant
Ext := ListView1.Items[i].Caption;
try
GetMem( Ico, sizeof(TShFileInfo) );
ImageListHandle :=
shGetFileInfo( PChar(Ext), 0,
ico^,
sizeof(TShFileInfo),
shgfi_sysiconindex or shgfi_icon or shgfi_smallicon);
SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle);
ListView1.Items[i].ImageIndex := Ico.iIcon;
finally
FreeMem(ico);
end;
//lub drugi
Ext := ListView1.Items[i].Caption;
ImageListHandle := ShGetFileInfo(PChar(Ext),
0,
SFI,
SizeOf(SFI),
SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle);
ListView1.Items[i].ImageIndex := SFI.iIcon;
end;
end; ;-( ;-( [glowa] [glowa]