Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   2 Formulare gleichzeitig verschieben? (https://www.delphipraxis.net/201826-2-formulare-gleichzeitig-verschieben.html)

gee21 31. Aug 2019 08:39

2 Formulare gleichzeitig verschieben?
 
Hallo alle zusammen :)

Ich habe ein Image auf der Mainform. im OnMouseDown event habe ich folgender Code damit der Benutzer das Fenster mit der Maus verschieben kann.

Delphi-Quellcode:
ReleaseCapture;
Perform(WM_SYSCOMMAND, $F012, 0);
Weis jemand wie man nun zb Form2 gleichzeitigt mitverschieben kann? (Also Benutzer verschiebt per MouseDown die Mainform.... und die Form2 soll sich pararell dazu mitbewegen ?

Kann man evt das mousedown der Form2 mitauslösen lassen?

Es geht darum das die beiden Fenster "optisch / visuell" zusammenhängen und auch immer zusammenhängen müssen)

Heuman 31. Aug 2019 09:46

AW: 2 Formulare gleichzeitig verschieben?
 
Hallo,

eine einfache Möglichkeit wäre vielleicht

form2.left
bzw. form2.top

im Mainform.mousedown entsprechend zu ändern.

Gruß

gee21 31. Aug 2019 09:58

AW: 2 Formulare gleichzeitig verschieben?
 
Zitat:

Zitat von Heuman (Beitrag 1444100)
Hallo,

eine einfache Möglichkeit wäre vielleicht

form2.left
bzw. form2.top

im Mainform.mousedown entsprechend zu ändern.

Gruß

Ja das habe ich schon probiert. das Problem dabei ist das sich dann Form2 erst verschiebt wenn man den Mousbutton los lässt. (also während dem verschieben der mainform trennt sich form2 kurz ab)
(Auch wenn ich es mit onMouseMove versuche)

Uwe Raabe 31. Aug 2019 10:39

AW: 2 Formulare gleichzeitig verschieben?
 
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;

gee21 31. Aug 2019 11:00

AW: 2 Formulare gleichzeitig verschieben?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1444107)
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;

Danke dir vielmals. Funktioniert wunderbar. :thumb::thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz