Содержание материала

 The following example shows how to show all files and their  associated icons of a folder in a TListView.

To test the code, you need a ListView1 and a ImageList1 where the icons are stored.

 

Code:

 

 

uses

  ShellApi;

 

procedure LV_InsertFiles(strPath: string; ListView: TListView; ImageList: TImageList);

var

  i: Integer;

  Icon: TIcon;

  SearchRec: TSearchRec;

  ListItem: TListItem;

  FileInfo: SHFILEINFO;

begin

  // Create a temporary TIcon

Icon := TIcon.Create;

  ListView.Items.BeginUpdate;

  try

    // search for the first file

   i := FindFirst(strPath + '*.*', faAnyFile, SearchRec);

    while i = 0 do

    begin

      with ListView do

      begin

        // On directories and volumes

       if ((SearchRec.Attr and FaDirectory <> FaDirectory) and

          (SearchRec.Attr and FaVolumeId <> FaVolumeID)) then

        begin

          ListItem := ListView.Items.Add;

          //Get The DisplayName

         SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,

            SizeOf(FileInfo), SHGFI_DISPLAYNAME);

          Listitem.Caption := FileInfo.szDisplayName;

          // Get The TypeName

         SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,

            SizeOf(FileInfo), SHGFI_TYPENAME);

          ListItem.SubItems.Add(FileInfo.szTypeName);

          //Get The Icon That Represents The File

         SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo,

            SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);

          icon.Handle := FileInfo.hIcon;

          ListItem.ImageIndex := ImageList.AddIcon(Icon);

          // Destroy the Icon

         DestroyIcon(FileInfo.hIcon);

        end;

      end;

      i := FindNext(SearchRec);

    end;

  finally

    Icon.Free;

    ListView.Items.EndUpdate;

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  // Assign a Imagelist to the ListView

ListView1.SmallImages := ImageList1;

  // Show Listview in Report Style and add 2 Columns

ListView1.ViewStyle := vsReport;

  ListView1.Columns.Add;

  ListView1.Columns.Add;

  LV_InsertFiles('C:\Windows\', ListView1, ImageList1);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить