Если вы уроните TImagelist в форму с двумя изображениями (один для файлов вперед и для каталогов), а затем назначите TImagelist свойству LargeImages TListviews, вы можете использовать приведенный ниже код.
procedure TForm2.Button1Click(Sender: TObject);
var li:TListItem;
SR: TSearchRec;
begin
FileList.Items.BeginUpdate;
try
FileList.Items.Clear;
FindFirst(ExtractFilePath(Application.ExeName) +'*.*', faAnyFile, SR);
try
repeat
li := FileList.Items.Add;
li.Caption := SR.Name;
if ((SR.Attr and faDirectory) <> 0) then li.ImageIndex := 1
else li.ImageIndex := 0;
until (FindNext(SR) <> 0);
finally
FindClose(SR);
end;
finally
FileList.Items.EndUpdate;
end;
end;
Затем вы можете построить это, добавив разные изображения в TImageList для разных типов файлов и используя ExtractFileExt (SR.Name), чтобы получить расширение файла
if ((SR.Attr and faDirectory) <> 0) then li.ImageIndex := 1
else if lowercase(ExtractFileExt(SR.Name)) = '.png' then li.ImageIndex := 2
else if lowercase(ExtractFileExt(SR.Name)) = '.pdf' then li.ImageIndex := 3
else li.ImageIndex := 0;