现在的位置: 首页 > 综合 > 正文

ListView动态获取文件图标

2013年12月03日 ⁄ 综合 ⁄ 共 1322字 ⁄ 字号 评论关闭

uses
  ShellAPI;

procedure TForm1.btn1Click(Sender: TObject);    //大图标视图
var
  LgImg: THandle;
  sfi: TSHFileInfo;
  sName, fName: string;
begin
  Lgimg := SHGetFileInfo(pchar('c:\'), 0, sfi, SizeOf(sfi),
    SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
  ListView1.ViewStyle := vsIcon;
  if OpenDialog1.Execute then
  begin
    ImageList1.Handle := LgImg;
    fName := OpenDialog1.FileName;
    sName := ExtractFileName(fName);
    with ListView1.Items.add do
    begin
      if SHGetFileInfo(pchar(fName), 0, sfi, SizeOf(sfi),
        SHGFI_ICON or SHGFI_LARGEICON or SHGFI_ATTRIBUTES) <> 0 then
        ImageIndex := sfi.iIcon
      else
        ImageIndex := -1;
      Caption := sName;
      SubItems.Add(IntToStr(sfi.dwAttributes));
    end;
  end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);    //vsReport详细报告视图
var
  smallImg: THandle;
  sfi: TSHFileInfo;
  sName, fName: string;
begin
  //ImageList2.Width := 32;
  //ImageList2.Height := 32;
  //ListView1.ViewStyle := vsSmallIcon;
  ListView1.GridLines := true;
  ListView1.SmallImages := ImageList2;
  if OpenDialog1.Execute then
  begin
    smallImg := SHGetFileInfo(pchar('c:\'), 0, sfi, SizeOf(sfi),
      SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
    ImageList2.Handle := smallImg;
    fName := OpenDialog1.FileName;
    sName := ExtractFileName(fName);
    with ListView1.Items.add do
    begin
      SHGetFileInfo(pchar(fName), 0, sfi, SizeOf(sfi),
        SHGFI_ICON or SHGFI_LARGEICON);
      ListView1.Items.Item[ListView1.Items.Count - 1].ImageIndex := sfi.iIcon;
      Caption := sName;
      SubItems.Add(IntToStr(sfi.dwAttributes));
    end;
  end;
end;

抱歉!评论已关闭.