IDFTP中怎样抓获文件的图标? ( 积分: 100 )

  • 主题发起人 主题发起人 lunyx_allen
  • 开始时间 开始时间
L

lunyx_allen

Unregistered / Unconfirmed
GUEST, unregistred user!
我用IDFTP来获取FTP服务器上的文件夹及文件,影射到一个listView中,名称可以抓得出,可是图标怎么抓得出来啊,哪位同志抓过吗?另外我抓文件夹的时候,总是多出两个并不存在的文件夹,代码如下:
IdFTP1.List(nil,'*');
for i:=0 to IDFTP1.DirectoryListing.Count-1 do
begin
if IDFTP1.DirectoryListing.Items.ItemType=ditDirectory then
showmessage(IDFTP1.DirectoryListing.Items.FileName)
end;
多出的文件夹名称是:'.' 和 '..' 不知道为什么
 
添加一个imagelistg到窗体中

Function GetSystemIconIndex(Const AFileName: String): Integer;
Var
shfi: TSHFileInfo;
Begin
If (SHGetFileInfo(PChar(AFileName), FILE_ATTRIBUTE_NORMAL, shfi, SizeOf(shfi),
SHGFI_USEFILEATTRIBUTES Or SHGFI_SMALLICON Or SHGFI_ICON)) = 1 Then
Result := shfi.iIcon
Else
Result := -1;
End;

Procedure AssignSystemImageList(AImageList: TImageList);
Var
sysImageList: Uint;
sfi: TSHFileInfo;
Begin
sysImageList := SHGetFileInfo('', 0, sfi, SizeOf(sfi),
SHGFI_SYSICONINDEX Or SHGFI_SMALLICON);
If sysImageList <> 0 Then
Begin
AImageList.Handle := sysImageList;
AImageList.ShareImages := true;
AImageList.BkColor := clNone;
End;
End;

Procedure TFrmMain.FormCreate(Sender: TObject);
Begin
AssignSystemImageList(imagelist1);
listview1.SmallImages := imagelist1;
End;


Var
ListItem: TListItem;
Begin
ListItem := listview1.Items.Add;
With ListItem Do
Begin
Caption := IDFTP1.DirectoryListing.Items.FileName;
ImageIndex := GetSystemIconIndex(IDFTP1.DirectoryListing.Items.FileName);
End;
 
还是抓不出图标
 
. .. 是本目录 上级目录 建议买本dos的旧书看,
练习下 command

图标不是抓的 ,而是在客户端自己定义在listview 里面的,需要客户端listview 的支持,一般还要配合 imagelist,再自己根据 ext name 判断文件类型 ,显示相关icon
 
图标不是固定的,千百个,怎么可能预先定义在客户端里?应该有个类似的抓获本机文件图标的api函数吧
 
后退
顶部