お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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