代码如下
---------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
SaveDialog: TSaveDialog;
OpenDialog: TOpenDialog;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses ShellAPI;{$R *.dfm}function GetFileIcon(const FileName: string; SmallIcon: Boolean): HICON;
var
Info: TSHFileInfo;
Flag: Integer;
begin
if SmallIcon then
Flag := (SHGFI_SMALLICON or SHGFI_ICON) else
Flag := (SHGFI_LARGEICON or SHGFI_ICON);
SHGetFileInfo(PChar(FileName),0,Info,Sizeof(Info),Flag);
Result := Info.hIcon;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog.Execute then
Edit1.Text := SaveDialog.FileName;
end;procedure TForm1.Button1Click(Sender: TObject);
var
Ico: TIcon;
begin
if OpenDialog.Execute then
begin
Ico := TIcon.Create;
Ico.Handle := GetFileIcon(OpenDialog.FileName, False);
Ico.SaveToFile(Edit1.Text);
Ico.Free;
end;
end;end.
-----------------------------------------------------------------------------
object Button1: TButton
Left = 24
Top = 24
Width = 161
Height = 25
Caption = '选择文件并保存图标为 ↓'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 24
Top = 64
Width = 401
Height = 22
TabOrder = 1
Text = 'Edit1'
end
object Button2: TButton
Left = 432
Top = 64
Width = 75
Height = 25
Caption = '浏览(&R)...'
TabOrder = 2
OnClick = Button2Click
end
object SaveDialog: TSaveDialog
Left = 296
Top = 32
end
object OpenDialog: TOpenDialog
Left = 224
Top = 16
end
------------------------将以上文本复制,并在一个空白窗体上粘贴就行
---------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
SaveDialog: TSaveDialog;
OpenDialog: TOpenDialog;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses ShellAPI;{$R *.dfm}function GetFileIcon(const FileName: string; SmallIcon: Boolean): HICON;
var
Info: TSHFileInfo;
Flag: Integer;
begin
if SmallIcon then
Flag := (SHGFI_SMALLICON or SHGFI_ICON) else
Flag := (SHGFI_LARGEICON or SHGFI_ICON);
SHGetFileInfo(PChar(FileName),0,Info,Sizeof(Info),Flag);
Result := Info.hIcon;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if SaveDialog.Execute then
Edit1.Text := SaveDialog.FileName;
end;procedure TForm1.Button1Click(Sender: TObject);
var
Ico: TIcon;
begin
if OpenDialog.Execute then
begin
Ico := TIcon.Create;
Ico.Handle := GetFileIcon(OpenDialog.FileName, False);
Ico.SaveToFile(Edit1.Text);
Ico.Free;
end;
end;end.
-----------------------------------------------------------------------------
object Button1: TButton
Left = 24
Top = 24
Width = 161
Height = 25
Caption = '选择文件并保存图标为 ↓'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 24
Top = 64
Width = 401
Height = 22
TabOrder = 1
Text = 'Edit1'
end
object Button2: TButton
Left = 432
Top = 64
Width = 75
Height = 25
Caption = '浏览(&R)...'
TabOrder = 2
OnClick = Button2Click
end
object SaveDialog: TSaveDialog
Left = 296
Top = 32
end
object OpenDialog: TOpenDialog
Left = 224
Top = 16
end
------------------------将以上文本复制,并在一个空白窗体上粘贴就行
解决方案 »
- [转]做守候在这里的最后一个乞丐!
- Access 数据库压缩后,原数据库密码被清除, 想保留密码怎么办?
- 在用DElPHI开发程序时,如数据库应用,会有很多的穸体和很大的代码,但都集中在一个可执行文件中了,有没有办法将代码
- 如何将TDateTimePicker置为空!!!!
- 新年到,我放分
- char和string的问题!请指教
- 如何使基类可以先处理消息?
- 向各位请教一个简单的SQL语句问题(为什么我问题提好后2分钟就到第二页是去了,请版主手下留情啊)
- TDBGrid中,怎样得到某单元格的左上角相对于窗体的坐标以及这单元格的高度?
- Hadoop可以手动启动,但脚本启动报错
- 能不能把函数单元做成BPL?解决另给200,顶者给分!
- 菜鸟提问,关于组件的引用!
32bit真彩色的图标取出后,变成了 256 色的了!
我在 Windows2000 上测试的是这样。
因为我在窗体上放了一个 TImage ,然后把取出的图标显示在 Image 中,
在窗体上的图标颜色是正常的,但是
再用 Image 的 SaveToFile 保存到文件中,效果就变差了。
Button1 的修改后的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
Ico: TIcon;
begin
if OpenDialog.Execute then
begin
Ico := TIcon.Create;
Ico.Handle := GetFileIcon(OpenDialog.FileName, False);
Ico.SaveToFile(Edit1.Text);
Image1.Picture.Icon.Assign(Ico);
Image1.Picture.SaveToFile(ExtractFilePath(Edit1.Text)+'Image1.ico');
Image1.Picture.Icon.SaveToFile(ExtractFilePath(Edit1.Text)+'Image2.ico');
Ico.Free;
end;
end;
http://community.csdn.net/Expert/TopicView3.asp?id=4814219