ListView动态获取文件图标

30 篇文章 0 订阅
12 篇文章 0 订阅


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;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值