ach so... ein Quadrat.... kein Rechteck?
ok. dann musst du dich entscheiden, ob du es vertikal oder horizontal aufziehst.
Sprich: ob dein Mauszeiger immer auf einer vertikalen oder auf einer horizontalen Seite des Quadrats liegt.
angenommen du machst es so, dass der Mauszeiger immer horizontal draufliegt, dann sollte
Delphi-Quellcode:
s := MousePos.X - OldMouse.X; //S = Seitenlänge
p1 := point(OldMouse.X,OldMouse.Y);
p2 := point(OldMouse.X + s, OldMouse.Y + s);
canvas.Rectangle(rect(p1,p2)); //hoffe, die überladung gibts....
zum Ziel führen. Werde das gleich mal persönlich überprüfen.
EDIT: funktioniert, beispielprojekt im Anhang.
EDIT2: Bedienung: einfach in der form ein rechteck aufziehen

EDIT3: mir fällt gerade auf, dass das doch nciht so funzt wie es sollte.

EDIT4:

Neue Version im Anhang, verhält sich richtig, Bedienung wie 2.