|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"プログラムアイコンの取得"
みなさんこんにちわ(^^)
アイコンを取得する際の参考にということで公開します。
普通のアイコンと小さい方のアイコンです。
//---
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, StdCtrls, ShellAPI;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
//大きいアイコンを普通に表示(ShowNormalIcon)
procedure TForm1.Button1Click(Sender: TObject);
var
Icon: TIcon;
begin
if OpenDialog1.Execute Then Begin
Icon := TIcon.Create;
try
Icon.Handle := ExtractIcon(HInstance,PChar(
OpenDialog1.Filename), 0);
Image1.Picture.Icon := Icon;
finally
Icon.Free;
end;
End;
end;
//nifty:FDELPHI/MES/09/1112を参考
//小さいアイコンを小さく表示
procedure ShowSmallIcon(FileName: String; Img :TImage);
const
ImgSize = 27;
var
IconHanlde: HICON;
SHFileInfo: TSHFileInfo;
Flags: UINT;
begin
Flags := SHGFI_ICON or SHGFI_SMALLICON;
With Img do begin
Height := ImgSize;
Width := ImgSize;
Canvas.Brush.Color := clBtnFace;
Canvas.Brush.Style := bsSolid;
Canvas.Pen.Color := clBtnFace;
AutoSize := False;
Stretch := False;
Canvas.RectAngle(0, 0, ImgSize, ImgSize);
End;
SHGetFileInfo(PChar(FileName), 0, SHFileInfo, SizeOf(SHFileInfo),
Flags);
IconHanlde := SHFileInfo.hIcon;
DrawIconEx(Img.Canvas.Handle, 0, 0,IconHanlde, 16, 16, 0, 0, DI_NORMAL);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute Then
SHowSmallIcon(OpenDialog1.FileName, Image1);
end;
end.
// -- end of file
※ 1度アイコンを表示させたら、一旦このプログラムを終了させてから次の
アイコンを表示させてください。
By かぼちゃの馬車 [ http://hm.aitai.ne.jp/~t_kondo/]
Original document by かぼちゃの馬車 氏 ID:(MXF01374)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|