pc蛋蛋主页
正安在线
资讯中心
您的位置:正安在线首页 > 资讯杂文 > 编程开发 >

delphi取得文件图标并在TListView中显示

        本站所有文字、图片、视频,版权均属原作者所有,如有侵权或争议请联系管理员删除。已授权本站的内容,在使用时必须注明“来源:正安在线或正安论坛?#20445;?#36829;者将依法追究相关责任。

  1. {delphi取得文件图标并在TListView中显示
  2.  
    技术要点:
  3.  
      一、使用SHGetFileInfo函数获取指定扩展名的文件图标。需要引用ShellAPI单元。
  4.  
      二、使用TStringList来保存扩展名与其图标的索引号。?#30887;?#21152;一个文件名至TListView后,
  5.  
    我们已经取得了其图标,再次添加同样扩展名的文件时,不需再次获取其图标,只要从该TStringList中取得其图标索引号即可}
  6.  
     
  7.  
    uses
  8.  
    ShellAPI;
  9.  
     
  10.  
    var
  11.  
    IconList:TStringList;
  12.  
     
  13.  
    { 实现获取图标及将图标添加到TImageList中的过程 }
  14.  
    procedure ListView_SetItemImageIndex(Item: TListItem);
  15.  
    var
  16.  
    nIndex:Integer;
  17.  
    Icon:TIcon;
  18.  
    fileName:string;
  19.  
    extName:string;
  20.  
    sinfo:SHFILEINFO;
  21.  
    begin
  22.  
    if TListView(Item.ListView).SmallImages<>nil then
  23.  
    begin
  24.  
    fileName:=Item.Caption;
  25.  
    extName:=ExtractFileExt(fileName);
  26.  
    nIndex:=IconList.IndexOf(extName);
  27.  
    if nIndex>-1 then
  28.  
    begin
  29.  
    nIndex:=Integer(IconList.Objects[nIndex]);
  30.  
    Item.ImageIndex:=nIndex;
  31.  
    end else
  32.  
    begin
  33.  
    FillChar(sinfo, SizeOf(sinfo),0);
  34.  
    SHGetFileInfo(PChar(extName),FILE_ATTRIBUTE_NORMAL,sinfo,SizeOf(sInfo),
  35.  
    SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON);
  36.  
    if sinfo.hIcon>0 then
  37.  
    begin
  38.  
    Icon:=TIcon.Create;
  39.  
    Icon.Handle:=sinfo.hIcon;
  40.  
    nIndex:=TListView(Item.ListView).SmallImages.AddIcon(Icon);
  41.  
    Icon.Free;
  42.  
    Item.ImageIndex:=nIndex;
  43.  
    IconList.AddObject(extName,TObject(nIndex));
  44.  
    end;
  45.  
    end;
  46.  
    end;
  47.  
    end;
  48.  
     
  49.  
    { 测试过程 }
  50.  
    procedure TForm1.Button1Click(Sender: TObject);
  51.  
    var
  52.  
    Item:TListItem;
  53.  
    begin
  54.  
    Item:=ListView1.Items.Add;
  55.  
    Item.Caption:=‘c:\test.jpg‘;
  56.  
    ListView_SetItemImageIndex(Item);
  57.  
    end;
  58.  
     
  59.  
    { 对IconList进行初始化及?#22836;?}
  60.  
    initialization
  61.  
    IconList:=TStringList.Create;
  62.  
    finalization
  63.  
    IconList.Free;
  64.  
    end.

责任编辑: admin
文章关键词:

你看到此篇文章的感受是:

您可能?#34892;?#36259;的文章
掌上正安 关于我们 业务联系 版权声明 友情链接
pc蛋蛋主页 灵灵发pk10必赢计划 麻将两人合作作弊技巧 后三不定位二码倍投 重庆时时360 重庆时时历史开奖号码 四川时时玩法介绍 重庆肘时彩开奖历史 快速时时计划网 澳门五分彩开奖计划 天天pk10在线计划