1. Für Quadrate/Kreise kannst du natürlich nicht die X-
und Y-Koordinaten benutzen. Ich würde die Seitenlänge nur aus der X-Koordinate errechnen lassen, also etwa so:
Delphi-Quellcode:
// OnMouseDown
OldPostion := Point(X, Y);
// OnMouseUp
Rectangle(OldPosition.X, OldPosition.Y, X, OldPostion.Y + X - OldPostion.X);
2. Variants kannst du in 90% der Fälle einfach aus den uses entfernen.