搜集的函数:listview中根据扩展名获得图标

本文介绍了一个Delphi函数,用于根据文件扩展名获取文件的大/小图标,并展示了如何在ListView控件中使用该函数显示自定义文件类型的图标。

function Tmainfrm.GetFileIconByExE(const ExEName:string;SmallIcon:boolean):HICON;
var
  sinfo: SHFILEINFO;
  sFlag: INTEGER;
begin
    // if copy(ExEname,1,1)<>'.' then ExEName:='.'+exEName;
     //必须有".",比如 .doc, .xls, .PDF
     ZeroMemory(@sinfo, sizeof(sinfo));
     if smallicon then
        sflag:=( SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON or SHGFI_ICON)
     else
        sflag:=( SHGFI_USEFILEATTRIBUTES or SHGFI_LARGEICON or SHGFI_ICON);

     SHGetFileInfo(pchar(ExEName), FILE_ATTRIBUTE_NORMAL,sinfo,sizeof(sinfo), sflag);
     Result := sinfo.hIcon; //返回ICON的指针
end;

 

 

 

调用:

 

procedure Tmainfrm.dbListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
  var
   temp_il_i:Integer;
begin

  
   

    if Item.SubItems.Count >=4 then
     begin
      img1.Picture.Icon.Handle := GetFileIconByExE(Item.SubItems.Strings[3],false);
      //temp_il :=TImageList.Create(il3);
      for temp_il_i := 1 to il3.Count - 1 do
      begin
        il3.Delete(temp_il_i);
      end;
      il3.AddIcon(img1.Picture.Icon);

      Item.ImageIndex :=il3.Count-1;
     end
     else
     begin
      Item.ImageIndex :=0;
     end;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值