为image添加MouseEnter,MouseLeave,DownPicute多种状态图片


unit Image1;



interface


uses
  System.SysUtils, System.Classes, Vcl.Controls, Vcl.ExtCtrls, dialogs,
  Messages, Graphics;


type
  TImage1 = class(TImage)
  private
    { Private declarations }
    FDownPicute: TPicture;
    FMouseEnter: TPicture;
    FMouseLeave: TPicture;
    procedure SetDownPicute(const Value: TPicture);
    procedure SetMouseEnter(const Value: TPicture);
    procedure SetMouseLeave(const Value: TPicture);
  protected
    { Protected declarations }
  public
    { Public }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure WMLBuMttonDown(var message: TWMLButtonDown);message WM_LBUTTONDOWN;
    procedure CMMOUSEENTER(var message: TWMLButtonDown); message CM_MOUSEENTER;
    procedure CMMOUSELEAVE(var message: TWMLButtonDown); message CM_MOUSELEAVE;
  published
    property DownPicute: TPicture read FDownPicute write SetDownPicute;
    property MouseEnter: TPicture read FMouseEnter write SetMouseEnter;
    property MouseLeave: TPicture read FMouseLeave write SetMouseLeave;
    { Published declarations }
  end;


procedure Register;


implementation


procedure Register;
begin
  RegisterComponents('Samples', [TImage1]);
end;


{ TImage1 }


procedure TImage1.CMMOUSEENTER(var message: TWMLButtonDown);
begin
  if csDesigning in ComponentState then
    exit;
  if FMouseEnter.Graphic = nil then
    exit;
  Picture.Assign(nil);
  Picture.Assign(MouseEnter);
  update;


end;


procedure TImage1.CMMOUSELEAVE(var message: TWMLButtonDown);
begin
  if csDesigning in ComponentState then
    exit;
  if FMouseLeave.Graphic = nil then
    exit;
  Picture.Assign(nil);
  Picture.Assign(MouseLeave);
  update;
end;


constructor TImage1.Create(AOwner: TComponent);
begin
  inherited;
  FDownPicute := TPicture.Create;
  FMouseEnter := TPicture.Create;
  FMouseLeave := TPicture.Create;
end;


destructor TImage1.Destroy;
begin
  FDownPicute.Free;
  FMouseEnter.Free;
  FMouseLeave.Free;
  inherited;
end;


procedure TImage1.SetDownPicute(const Value: TPicture);
begin
  // FDownPicute := Value;
  FDownPicute.Assign(Value);
end;


procedure TImage1.SetMouseEnter(const Value: TPicture);
begin
  // FMouseEnter := Value;
  FMouseEnter.Assign(Value);
end;


procedure TImage1.SetMouseLeave(const Value: TPicture);
begin
  // FMouseLeave := Value;
  FMouseLeave.Assign(Value);
end;


procedure TImage1.WMLBuMttonDown(var message: TWMLButtonDown);
begin
  if (csDesigning in ComponentState) then
    exit;
  if not Self.Enabled then
    exit;
  if FDownPicute.Graphic = nil then
    exit;
  Picture.Assign(nil);
  Picture.Assign(FDownPicute.Graphic);
  update;
end;


end.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值