Главная » Delphi » Графика » Loading Icon files

Loading Icon files

16:37
Hi,

> How can I get the actual 48x48 image?

I use the enclosed component to do that. Include the icon in your
application's resource file and set the property ResourceName to the
appropriate resource. ResourceName defaults to MAINICON which is your
application's icon. I love this component for about boxes.

Please email me directly if you have any problems. I use this component in
my own programs so I want to know about any updates or fixes...
___________________
John Long
www.wiseheart.20m.com
 
{***************************************************************
 *
 * Unit Name: AppIcon
 * Purpose : Contains the AppIcon component which can be used
 * to display an Icon on a form from your project's
 * resource file. Set the property ResourceName to
 * the name of the resource you want to load. It
 * will be displayed at run time.
 * Author : John Long <johnwlong@mail.com>
 * History : ??/??/2001 Created.
 * Notes : Please email all significant changes to me at my email address
above.
 * Copyright© 2001-2002, John W. Long
 ****************************************************************}

 
unit AppIcon;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Math;
 
type
  TIconSize = (icon16x16,icon24x24,icon32x32,icon48x48,iconCustom);
  TAppIcon = class(TGraphicControl)
  private
    { Private declarations }
    FIconHandle:HICON;
    FIconWidth: Integer;
    FIconHeight: Integer;
    FIconSize: TIconSize;
    FResourceName: String;
    procedure ReloadIcon();
    procedure SetIconWidth(const Value: Integer);
    procedure SetIconHeight(const Value: Integer);
    procedure SetIconSize(const Value: TIconSize);
    procedure SetResourceName(const Value: String);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ChangeIconSize(size:TPoint);
    property IconHandle:HICON read FIconHandle;
    procedure Paint; override;
  published
    { Published declarations }
    property IconWidth:Integer read FIconWidth write SetIconWidth;
    property IconHeight:Integer read FIconHeight write SetIconHeight;
    property IconSize:TIconSize read FIconSize write SetIconSize;
    property ResourceName:String read FResourceName write SetResourceName;
    property Anchors;
    property Align;
    property Constraints;
    property ShowHint;
    property Cursor;
    property Hint;
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Wiseheart', [TAppIcon]);
end;
 
{ TAppIcon }
 
constructor TAppIcon.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FResourceName := 'MAINICON';
  FIconHandle:=0;
  ChangeIconSize(Point(32,32));
  FIconSize:=icon32x32;
  Width:=32;
  Height:=32;
end;
 
procedure TAppIcon.ReloadIcon;
begin
  if FIconHandle <> 0 then DestroyIcon(FIconHandle);
  if csDesigning in ComponentState then
 
FIconHandle:=LoadImage(MainInstance,Pchar('MAINICON'),IMAGE_ICON,FIconWidth,
FIconHeight,LR_DEFAULTCOLOR)
  else
 
FIconHandle:=LoadImage(MainInstance,Pchar(FResourceName),IMAGE_ICON,FIconWid
th,FIconHeight,LR_DEFAULTCOLOR);
  Repaint;
end;
 
procedure TAppIcon.ChangeIconSize(size: TPoint);
begin
  FIconWidth := Max(size.x,16);
  FIconHeight := Max(size.y,16);
 
  if (FIconSize<>iconCustom) and
     ((FIconWidth <> 16) or (FIconHeight <> 16)) and
     ((FIconWidth <> 24) or (FIconHeight <> 24)) and
     ((FIconWidth <> 32) or (FIconHeight <> 32)) and
     ((FIconWidth <> 48) or (FIconHeight <> 48)) then
     FIconSize:= iconCustom;
 
  ReloadIcon;
end;
 
procedure TAppIcon.SetIconHeight(const Value: Integer);
begin
  ChangeIconSize(Point(FIconWidth,Value));
end;
 
procedure TAppIcon.SetIconWidth(const Value: Integer);
begin
  ChangeIconSize(Point(FIconHeight,Value));
end;
 
procedure TAppIcon.SetIconSize(const Value: TIconSize);
begin
  FIconSize := Value;
  case FIconSize of
  icon16x16: ChangeIconSize(Point(16,16));
  icon24x24: ChangeIconSize(Point(24,24));
  icon32x32: ChangeIconSize(Point(32,32));
  icon48x48: ChangeIconSize(Point(48,48));
  end;
end;
 
procedure TAppIcon.Paint;
begin
  inherited Paint;
  if FIconHandle > 0 then
    DrawIconEx(Canvas.Handle,(Width-FIconWidth) div 2,(Height-FIconHeight)
div 2,
      FIconHandle,FIconWidth,FIconHeight,0,0,DI_NORMAL);
  if csDesigning in ComponentState then
  begin
    Canvas.Pen.Style := psDash;
    Canvas.Pen.Color := clWindowFrame;
    Canvas.Brush.Style := bsClear;
    Canvas.Rectangle(0,0,ClientWidth,ClientHeight);
  end;
end;
 
destructor TAppIcon.Destroy;
begin
  inherited Destroy;
  if FIconHandle <> 0 then DestroyIcon(FIconHandle);
end;
 
procedure TAppIcon.SetResourceName(const Value: String);
begin
  FResourceName := Value;
  ReloadIcon;
end;
 
end.