You can just create your own decendant of TSpeedButton and put your code in there. Like TMySpeedButton. CMMouseEnter/MouseLeave ist the way to go.

If you haven't written components before:
Just copy the CMMouseEnter/MouseLeave procedure declarations from Buttons.pas and then create two new properties

property OnMouseEnter: TNotifiyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifiyEvent read FOnMouseLeave write FOnMouseLeave;

then in the CMMouseLeave/Enter procecedures you do this:

if Assigned(FOnMouseEnter) then
FOnMouseEnter(Self);


hope that helps.