• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何在你的程序中使用系统图标_Delphi

Delphi 搞代码 3年前 (2018-08-09) 187次浏览 已收录 0个评论

在资源管理器中,每一个目录文件都有自已的图标,如何在自已的应用程序里使用它呢?
下面给出相关的例程,以及简单的调用实例。

uses shellapi;

第一步  取得系统的图标列表的句柄,将之赋予一个图像列表控件。
procedure GetSystemImageList(imagelist:TImageList);
var
    SysIL: THandle;
    SFI: TSHFileInfo;

http://www.gaodaima.com/?p=65865如何在你的程序中使用系统图标_Delphi

begin
    // 取小图标,如果将SHGFI_SMALLICON替换成
    //SHGFI_LARGEICON则表示取大图标
    SysIL := SHGetFileInfo(”, 0, SFI, SizeOf(SFI),
        SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
    if SysIL <> 0 then begin
        //将imagelist的图像列表句柄指向系统图像句柄
        imagelist.Handle := SysIL;
        //防止组件释放时释放图像句柄,很重要
        imagelist.ShareImages := TRUE;
    end;
end;

第二步  取得要处理文件的图标索引
//取一个文件的图标索引
function GetIconIndex(const AFile: string; Attrs: DWORD): integer;
//Attrs可以为表示文件或路径FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY
var
    SFI: TSHFileInfo;       
begin
    SHGetFileInfo(PChar(AFile), Attrs, SFI, SizeOf(TSHFileInfo),
     SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES);
    Result := SFI.iIcon;
end;

实例调用:
//如在TreeView中得到c:/mydir的图标,因为是路径所以要加上路径的标志
aNode.ImageIndex := GetIconIndex(‘c:/mydir/’,
     FILE_ATTRIBUTE_NORMAL or FILE_ATTRIBUTE_DIRECTORY);
//如在TreeView中得到c:/index.html的图标
aNode.ImageIndex := GetIconIndex(‘c:/index.html‘,FILE_ATTRIBUTE_NORMAL);

欢迎大家阅读《如何在你的程序中使用系统图标_Delphi,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址