unit ExtImage; interface uses Controls, ExtCtrls, Messages, Classes, Graphics; type TCustomExtImage = class(TImage) private FOnMouseLeave: TNotifyEvent; FOnMouseEnter: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; protected property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; procedure MouseEnter; virtual; procedure MouseLeave; virtual; end; TExtImage = class(TCustomExtImage) published property OnMouseEnter; property OnMouseLeave; end; procedure Register; implementation procedure Register; begin RegisterComponents('Supplement', [TExtImage]); end; { TCustomExtImage } procedure TCustomExtImage.CMMouseEnter(var Message: TMessage); begin MouseEnter; end; procedure TCustomExtImage.CMMouseLeave(var Message: TMessage); begin MouseLeave; end; procedure TCustomExtImage.MouseEnter; begin if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure TCustomExtImage.MouseLeave; begin if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; end.