TButton.MouseDown (abgeleitet von TControl.MouseDown) hat keinen Parameter Sender. Wozu auch. Das ist ja eine Methode der Klasse TButton und du willst damit ja nicht auf Klicks auf andere Buttons reagieren. Du hast den Procedurekopf wahrscheinlich von irgendeinem OnMouseDown kopiert, das ist aber etwas anderes. Das ist ein Event, der an mehreren Butons hängen könnte und da muss man unterscheiden können, welcher Button geklickt wurde.
also:
Delphi-Quellcode:
Procedure MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Override;
Und dann im TMyButton.MouseDown das fOnMouseDown mit self als erstem Parameter aufrufen.