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.