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;