如何取得文件的图标,并加入listview中

ltolll 2003-11-25 01:23:04
想要在listview显示硬盘上某一文件夹下的文件(包括子文件夹)——想要加入系统赋予它们的图标,就像资源管理器中显示的那样。
另外,当选择listview中某一文件时,这一文件名添加到一个ComboBoxEx中并且在ComboBoxEx中也加入此文件的图标。
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
casey_ho 2003-11-26
  • 打赏
  • 举报
回复
delphi有个例子,Demos下的virtualListView
CDSoftwareWj 2003-11-26
  • 打赏
  • 举报
回复
我这段程序是最好的。
你可以看看我的软件,就是采用这个程序的。
http://bolenl.myetang.com 中的(奥博文件管理员)

当我们要用LISTVIEW控件来列出文件时,怎么让LISTBIEW显示文件自己的图标,
下面的程序可以让你做到。(一个单元列子)

unit mainf;
interface
uses
加入 shellapi,CommCtrl;
type
Tform1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
form1: Tform1;
B_ImageListHandle: THandle;//大图标集句柄
S_ImageListHandle: THandle;//小图标集句柄

implementation

{$R *.DFM}

{Form 创建过程}
procedure Tform1.FormCreate(Sender: TObject);
var
FileInfo: TSHFileInfo;
begin
//取得小图标集句柄
S_ImageListHandle := SHGetFileInfo('C:\',0,FileInfo,
SizeOf(FileInfo),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
//将小图标集句柄指给列表
SendMessage(Listview1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, S_ImageListHandle);
//取得大图标集句柄
B_ImageListHandle := SHGetFileInfo('C:\',0,FileInfo,SizeOf(FileInfo),
SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
//将大图标集句柄指给列表
SendMessage(FileList.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, B_ImageListHandle);
end;

现在你可以在其它的事件中,如OnChange取得文件的图标索引信息,然后指定ListView的ImageIndex
procedure Tform1.listviewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
var ShFileInfo: TSHFILEINFO;
begin
//........这里是搜索文件和增加列表项的语句....................
WITH listview.items.add DO
Caption:='新文件名';
SubItems.Strings[0]:='ABCDKDDKDKDKD';
//..............开始取得文件图标索引
IF ShGetFileInfo(pchar(路径加+文件名), 0, SHFileInfo,SizeOf(SHFileInfo),
SHGFI_SMALLICON or SHGFI_SYSICONINDEX or SHGFI_TYPENAME)<>0 then
Item.Imageindex:=SHFileInfo.iIcon
else
Item.Imageindex:=0;
end;



一找一大堆 哈哈哈

懒人...鄙视你一下先
CDSoftwareWj 2003-11-26
  • 打赏
  • 举报
回复
用API函数SHGetFileInfo可以根据扩展名得到其Icon在系统中的编号,你可把ImageList同
系统的ImageList相连就行。
如:
var
ImageList:THandle;
FileInfo:TSHFileInfo
Node:TTreeNode;
begin
ImageList:=SHGetFileInfo('c:\',0,FileInfo,sizeof(FileInfo),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
ImageList1.Handle:=ImageList;
ImageList1.ShareImages:=true;
SHGetFileInfo('.zip',0,FileInfo,sizeof(FileInfo),SHGFI_USEFILEATTRIBUTES|SHGFI_ICON|SHGFI_SMALLICON);
TreeNode:=TreView1.Items.Add(nil,'*.zip');
TreeNode.ImageIndex:=FileInfo.iIcon;
end;

ListView 类似
xiaoxiao197821 2003-11-25
  • 打赏
  • 举报
回复
up

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧