M MicroZeng Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #1 每一个文件,不管什么类型, 在windows中,都有一个对应的图标。<br>请问我如何得取这个图标,并且显示在TListView上。<br>delphi中自带有那个例子。但是确实看不懂。<br>请大虾指点迷津。
每一个文件,不管什么类型, 在windows中,都有一个对应的图标。<br>请问我如何得取这个图标,并且显示在TListView上。<br>delphi中自带有那个例子。但是确实看不懂。<br>请大虾指点迷津。
H hubdog Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #2 function GetFileIcon(const Filename:String; SmallIcon:Boolean):HICON; <br>var info:TSHFILEINFO; <br>Flag: Integer; <br>begin <br>if SmallIcon then Flag:=(SHGFI_SMALLICON or SHGFI_ICON) <br>else Flag:=(SHGFI_LARGEICON or SHGFI_ICON); <br>SHGetFileInfo(Pchar(Filename),0,info,Sizeof(info),Flag); <br>Result:=info.hIcon; <br>end;
function GetFileIcon(const Filename:String; SmallIcon:Boolean):HICON; <br>var info:TSHFILEINFO; <br>Flag: Integer; <br>begin <br>if SmallIcon then Flag:=(SHGFI_SMALLICON or SHGFI_ICON) <br>else Flag:=(SHGFI_LARGEICON or SHGFI_ICON); <br>SHGetFileInfo(Pchar(Filename),0,info,Sizeof(info),Flag); <br>Result:=info.hIcon; <br>end;
W wind2000 Unregistered / Unconfirmed GUEST, unregistred user! 2000-06-09 #3 uses ShellAPi, FileCtrl;<br>...<br>var<br> shf : TShFileInfo;<br> F_icon : TIcon;<br> FimagesL : TImageList;<br>...<br>begin<br> ...<br> //得到文件的ICO图标<br> ShGetFileInfo(PChar('文件'),//包括完整的路径<br> 0,<br> shf,<br> sizeof(shf), shgfi_Icon or<br> shgfi_DisplayName or<br> shgfi_sysiconindex or<br> shgfi_SmallIcon);<br> end;<br> F_icon := TIcon.Create;<br> F_icon.Handle := shf.hIcon;<br> FImagesL.AddIcon(F_icon);//把ICO装入ImageList中<br> ...<br> F_Icon.Free;<br>...<br>end;<br><br>在StringGrid的OndrawCell事件中加入代码:<br><br>procedure TForm1.StringGridDrawCell(Sender: TObject; ACol,<br>ARow: Integer; Rect: TRect; State: TGridDrawState);<br>var<br> P_Str : string;<br>begin<br>......<br><br>With StringGrid do<br><br>begin<br> ImgList.GetIcon(3, Image.Picture.Icon);<br> //放一TImageList和一个TImage控件,把ImageList中的第3个图标赋给Image<br> //你可以根据所需取相应的图标<br> P_Str := Trim(StringGrid.Cells[ACol, ARow]);<br> //先把该栏的内容保存<br> Canvas.FillRect(Rect);//清掉矩形框内的内容,试试看,不要这一句会有什么<br> //后果<br> Canvas.Draw(Rect.Left + 1, rect.Top + 1, Image.Picture.Icon);<br> //画图标<br> Canvas.TextOut(Rect.Left + Image.ClientWidth + 1, Rect.Top + 3,<br> P_str);//写入保存的内容<br> ......<br>end;<br><br>我想TListView也差不多吧<br>wind2000@21cn.com<br>windstorm2000.yeah.net<br><br> <br><br>
uses ShellAPi, FileCtrl;<br>...<br>var<br> shf : TShFileInfo;<br> F_icon : TIcon;<br> FimagesL : TImageList;<br>...<br>begin<br> ...<br> //得到文件的ICO图标<br> ShGetFileInfo(PChar('文件'),//包括完整的路径<br> 0,<br> shf,<br> sizeof(shf), shgfi_Icon or<br> shgfi_DisplayName or<br> shgfi_sysiconindex or<br> shgfi_SmallIcon);<br> end;<br> F_icon := TIcon.Create;<br> F_icon.Handle := shf.hIcon;<br> FImagesL.AddIcon(F_icon);//把ICO装入ImageList中<br> ...<br> F_Icon.Free;<br>...<br>end;<br><br>在StringGrid的OndrawCell事件中加入代码:<br><br>procedure TForm1.StringGridDrawCell(Sender: TObject; ACol,<br>ARow: Integer; Rect: TRect; State: TGridDrawState);<br>var<br> P_Str : string;<br>begin<br>......<br><br>With StringGrid do<br><br>begin<br> ImgList.GetIcon(3, Image.Picture.Icon);<br> //放一TImageList和一个TImage控件,把ImageList中的第3个图标赋给Image<br> //你可以根据所需取相应的图标<br> P_Str := Trim(StringGrid.Cells[ACol, ARow]);<br> //先把该栏的内容保存<br> Canvas.FillRect(Rect);//清掉矩形框内的内容,试试看,不要这一句会有什么<br> //后果<br> Canvas.Draw(Rect.Left + 1, rect.Top + 1, Image.Picture.Icon);<br> //画图标<br> Canvas.TextOut(Rect.Left + Image.ClientWidth + 1, Rect.Top + 3,<br> P_str);//写入保存的内容<br> ......<br>end;<br><br>我想TListView也差不多吧<br>wind2000@21cn.com<br>windstorm2000.yeah.net<br><br> <br><br>