unit uMyImage;interfaceuses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;type
  TMyImage = class(TImage)
  private
    FOnMouseLeave:TNotifyEvent;
    FOnMouseEnter:TNotifyEvent;
    procedure WMMOUSELEAVE(var msg:TMessage);message CM_MOUSELEAVE;
    procedure WMMOUSEENTER(var msg:TMessage);message CM_MOUSEENTER;
    { Private declarations }
  protected
    procedure DoMouseLeave;dynamic;
    procedure DoMouseEnter;dynamic;
    { Protected declarations }
  public
    { Public declarations }
  published
    property OnMouseEnter:TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave:TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    { Published declarations }
  end;procedure Register;implementationprocedure Register;
begin
  RegisterComponents('MyComponent', [TMyImage]);
end;{ TMyImage }procedure TMyImage.DoMouseEnter;
begin
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;procedure TMyImage.DoMouseLeave;
begin
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;procedure TMyImage.WMMOUSEENTER(var msg: TMessage);
begin
  DoMouseEnter;
end;procedure TMyImage.WMMOUSELEAVE(var msg: TMessage);
begin
  DoMouseLeave;
end;end.