Ich verschiebe mit der Maus eine Shape:
Delphi-Quellcode:
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
XMouseDown := X;
YMouseDown := Y;
IsOver := true;
end;
procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
IsOver := False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IsOver := False;
end;
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if isOver then
begin
Caption := IntToStr(X);
Shape1.Left := Shape1.Left + X - XMouseDown;
Shape1.Top := Shape1.Top + Y - YMouseDown;
end;
end;
Jetzt ist es aber so, dass man dieses Shape nur diagonal im 45° Winkel von links oben nach recht unter verschieben können darf. Also auch wenn ich die Maus seitwärts bewege muss das Shape sich nach rechts unten bewegen. Hinzukommt, dass sich das Shape auch bewegen muss, wenn die Maus aufgrund der Bewegung das Shape verlässt.