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]