Eigentlich sollte der Code auch für ein Rechteck nicht funktionieren, da das Shape einen eigenen MouseMove-Event hat und das MouseMove des Forms gar nicht aufgerufen wird, wenn die Maus über dem Shape ist.
So sollte es aber funktionieren:
Delphi-Quellcode:
procedure TForm33.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
Inside: Boolean;
R: Extended;
begin
if Shape1.Width < Shape1.Height then
R := Shape1.Width/2
else
R := Shape1.Height/2;
Inside := Sqr(X - R) + Sqr(Y - R) <= Sqr(R);
...
end;