Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi In Form2 mitbekommen wenn Form1 bewegt wird (https://www.delphipraxis.net/144875-form2-mitbekommen-wenn-form1-bewegt-wird.html)

burn 18. Dez 2009 13:57


In Form2 mitbekommen wenn Form1 bewegt wird
 
Hallo Miteinander,

folgende Situation:

Ich habe ein Formular (Haupt-Formular) ... Darauf liegt ein Panel (alClient)
Nun rufe ich ein zweites Formular auf:

Delphi-Quellcode:
Form2 := TForm2.CreateParented(Panel1.Handle);
Form2.Show;
Damit ich Form2 nicht aus Form1/Panel1 schieben kann, reagiere ich in
Form2 auf die Message WM_WINDOWPOSCHANGING und unterbinde das dort.

Nun müsste ich aber auch in Form2 reagieren wenn WM_WINDOWPOSCHANGING
in Form1 ausgelöst wird oder einfacher:

Wie löse ich Form2/WM_WINDOWPOSCHANGING aus wenn WM_WINDOWPOSCHANGING in
Form1 ausgelöst wird.

QuickAndDirty hab ich das so gemacht:

in Form1 bei WM_WINDOWPOSCHANGING
Delphi-Quellcode:
Form2. Top := Form2.Top + 1;
Form2. Top := Form2.Top - 1;
Allerdings "hüpft" da Form2 beim bewegen von Form1.
Wie kann man das besser lösen ????

mfg burn

lbccaleb 18. Dez 2009 14:20

Re: In Form2 mitbekommen wenn Form1 bewegt wird
 
Reagiere einfach in form1 auf die Windows Message und sende sie auch an Form2!

burn 18. Dez 2009 14:26

Re: In Form2 mitbekommen wenn Form1 bewegt wird
 
Hatte ich auch schon probiert aber leider wusste ich dann nicht weiter

Hab mir das so gedacht -> In Form1\WM_WINDOWPOSCHANGING:
Delphi-Quellcode:
SendMessage(Form2.handle, WM_WINDOWPOSCHANGING, ?, ?)
Aber was muss ich für die 2 Fragezeichen einsetzen ??

Edit:

Hab das Problem selber lösen können. Ich habe einfach in Form1\WM_WINDOWPOSCAHNGING ein
SetWindowPos mit den Parametern von Form2 aufgerufen. Damit wird Form2\WM_WINDOWPOSCAHNGING ausgelöst...
Delphi-Quellcode:
procedure TForm1.WMWINDOWPOSCHANGING(var Msg: TWMWINDOWPOSCHANGING);
begin
  if Assigned(Form2) then
  begin
    SetWindowPos(Form2.Handle, 0, Form2.Left, Form2.Top, Form2.Width, Form2.Height,0);
  end;
end;

mfg burn


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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