您的位置:首页 > 其它

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

2013-05-15 22:32 169 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: