Du kannst in dem MainForm folgenden Messagehandler implementieren:
Delphi-Quellcode:
procedure WMMoving(var Message: TWMMoving); message WM_MOVING;
procedure TMainForm.WMMoving(var Message: TWMMoving);
begin
Form2.Left := Message.DragRect.Left + FOffset.X;
Form2.Top := Message.DragRect.Top + FOffset.Y;
end;
Falls der Offset nicht statisch ist, kannst du ihn auch im FormActivate (und in deinem Fall auch im FormMouseDown) ermitteln:
Delphi-Quellcode:
procedure TMainForm.FormActivate(Sender: TObject);
begin
FOffset := TPoint.Create(Form2.Left - Left, Form2.Top - Top);
end;