unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ImgList, Menus;type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
PopupMenu1: TPopupMenu;
report1: TMenuItem;
smallicon1: TMenuItem;
vsicon1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure report1Click(Sender: TObject);
procedure smallicon1Click(Sender: TObject);
procedure vsicon1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses ShellAPI, ActiveX, ComObj, CommCtrl, FileCtrl;
procedure TForm1.FormCreate(Sender: TObject);
var
FileInfo: TSHFileInfo;
S_ImageListHandle:thandle;
begin
//取得小图标集句柄
S_ImageListHandle := SHGetFileInfo('C:\',0,FileInfo,
SizeOf(FileInfo),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
//将小图标集句柄指给列表
SendMessage(Listview1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, S_ImageListHandle);
end;procedure TForm1.Button1Click(Sender: TObject);
var
FileInfo: TSHFileInfo;
ListItem:tlistitem;
begin
ListItem:=ListView1.Items.Add;
listitem.Caption:='udp.txt';
FillChar(FileInfo, SizeOf(FileInfo), #0);
SHGetFileInfo(Pchar('c:\udp.txt'),0,FileInfo,sizeof(FileInfo),
SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON);
ListItem.ImageIndex :=FileInfo.iIcon ;
end;procedure TForm1.report1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsreport;
end;procedure TForm1.smallicon1Click(Sender: TObject);
begin
listview1.ViewStyle:=vssmallicon;
end;procedure TForm1.vsicon1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsicon;
end;end.
请问如何获得文件的大图标(如c盘下的udp.txt大图标),能在listview的vsicon下显示,万分感谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ImgList, Menus;type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
PopupMenu1: TPopupMenu;
report1: TMenuItem;
smallicon1: TMenuItem;
vsicon1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure report1Click(Sender: TObject);
procedure smallicon1Click(Sender: TObject);
procedure vsicon1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses ShellAPI, ActiveX, ComObj, CommCtrl, FileCtrl;
procedure TForm1.FormCreate(Sender: TObject);
var
FileInfo: TSHFileInfo;
S_ImageListHandle:thandle;
begin
//取得小图标集句柄
S_ImageListHandle := SHGetFileInfo('C:\',0,FileInfo,
SizeOf(FileInfo),SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
//将小图标集句柄指给列表
SendMessage(Listview1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, S_ImageListHandle);
end;procedure TForm1.Button1Click(Sender: TObject);
var
FileInfo: TSHFileInfo;
ListItem:tlistitem;
begin
ListItem:=ListView1.Items.Add;
listitem.Caption:='udp.txt';
FillChar(FileInfo, SizeOf(FileInfo), #0);
SHGetFileInfo(Pchar('c:\udp.txt'),0,FileInfo,sizeof(FileInfo),
SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON);
ListItem.ImageIndex :=FileInfo.iIcon ;
end;procedure TForm1.report1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsreport;
end;procedure TForm1.smallicon1Click(Sender: TObject);
begin
listview1.ViewStyle:=vssmallicon;
end;procedure TForm1.vsicon1Click(Sender: TObject);
begin
listview1.ViewStyle:=vsicon;
end;end.
请问如何获得文件的大图标(如c盘下的udp.txt大图标),能在listview的vsicon下显示,万分感谢!
SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON);
里面的 SHGFI_SMALLICON改为SHGFI_LARGEICON看看
procedure TForm1.Button1Click(Sender: TObject);
var
FileInfo: TSHFileInfo;
ListItem:tlistitem;
begin
ListItem:=ListView1.Items.Add;
listitem.Caption:='udp.txt';
FillChar(FileInfo, SizeOf(FileInfo), #0);
ImageList1.Handle := SHGetFileInfo(Pchar('c:\udp.txt'),0,FileInfo,sizeof(FileInfo),
SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_LARGEICON);
ImageList1.ShareImages := True;
ListItem.ImageIndex :=FileInfo.iIcon ;
end;