慢慢看这段代码在Listview设置如下 SmallImages:=TImageList.CreateSize(32,32); SmallImages.ShareImages:=True; SmallImages.Handle:= ShGetFileInfo('', 0, FileInfo,SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON ); end; 其添加行时设置如下 with Result do begin Caption:=filename;imageindex:= GetFileIconIndex(filename,nmftp1.FTPDirectoryList.Attribute[i]); end;其中 function GetFileIconIndex(FileName,attribute:string):integer; var fileinfo:tshfileinfo; begin if attribute[1]='d' then result:=4 else begin ShGetFileInfo(Pchar(FileName), 0, FileInfo,SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); Result:=FileInfo.iIcon; end; end;
ExtractAssociatedIcon(hInstance,pchar('xxx.'+FileExt),index)可以得到文件相关的图表,如果你的机子上装了winzip,FileExe='zip',那么你就可以得到zip的图标,其实的到文件的扩展名后做个判断,然后从ImageList里面掉入相应的图标就行了
SmallImages:=TImageList.CreateSize(32,32);
SmallImages.ShareImages:=True;
SmallImages.Handle:= ShGetFileInfo('', 0, FileInfo,SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON );
end;
其添加行时设置如下
with Result do
begin
Caption:=filename;imageindex:= GetFileIconIndex(filename,nmftp1.FTPDirectoryList.Attribute[i]);
end;其中
function GetFileIconIndex(FileName,attribute:string):integer;
var fileinfo:tshfileinfo;
begin
if attribute[1]='d' then
result:=4
else
begin
ShGetFileInfo(Pchar(FileName), 0, FileInfo,SizeOf(SHFileInfo), SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON);
Result:=FileInfo.iIcon;
end;
end;
上面的方法是OK的