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/)
-   -   Delphi Vom Childfenster das Hauptfenster auf Verschieben überwachen (https://www.delphipraxis.net/4242-vom-childfenster-das-hauptfenster-auf-verschieben-ueberwachen.html)

APP 20. Apr 2003 19:04


Vom Childfenster das Hauptfenster auf Verschieben überwachen
 
Hallo,

ich suche eine Möglichkeit vom Childfenster einer Applikation (z.B. Form2) aus,
festzustellen, wann das Hauptfenster (z.B. Form1) mit der Maus verschoben wird.

Geht das?

Christian Seehase 20. Apr 2003 23:25

Moin Armin,

ja, geht.

Dazu musst Du in Deinem Form1 die Message WM_MOVE (Bewegung wurde beendet) bzw. WM_MOVING (Fenster wird bewegt) abfangen, und dieses an das andere Formular weitemelden.

Delphi-Quellcode:
// In Unit1

// in TForm1 deklarieren
    procedure FormMovingEnded(var msg : TMessage); message WM_MOVE;

//...

var
  msgMoveEnded : DWORD; // Für eigene Message

implementation

procedure TForm1.FormMovingEnded(var msg : TMessage);
begin
  // nur wenn das andere Formular existiert und sichtbar ist!
  if Assigned(Form2) and (Form2.Visible) then SendMessage(Form2.Handle,msgMoveEnded,0,0);
end;

initialization
begin // Eindeutige Message registrieren
  msgMoveEnded := RegisterWindowMessage('6868C4D1-3D8E-4DBC-B38F-B9C1C8A31E72');
end;


//**************************************************

// In Unit2

// In TForm2
  protected
    procedure WndProc(var msg: TMessage); override;

//...

implementation

procedure TForm2.WndProc(var msg: TMessage);
begin
  // auf die Private Message prüfen
  if msg.Msg = msgMoveEnded then
  begin // z.B. in ein Memo schreiben
    Memo1.Lines.Add('Form1 hat aufgehört sich zu bewegen: '+DateTimeToStr(now));
    exit;
  end;
  // Bei jeder anderen Message auf jeden Falle die original WndProc aufrufen
  inherited WndProc(msg);
end;

APP 21. Apr 2003 08:32

Hallo Christian!

Wow, Danke :hello:

APP 21. Apr 2003 20:52

Hallo,
obwohl ich eine tolle Lösung von Christian bekommen habe,
bin ich mal unverschämt :mrgreen: und frage,
ob es die Möglichkeit gibt, das Verschieben der MainForm
von einem Childfenster aus zu Überwachen, ohne das man
Code in das MainForm schreiben muß (weiß nicht, mit
einem Handle, Parent, oder :freak: so...).

Zum Beispiel, um diesen Code in eine Komponente zu integrieren...

jbg 21. Apr 2003 21:12

Ja eine solche Lösung gibt es. Nur ist die umständlicher als die von Christian.

APP 22. Apr 2003 06:26

@jbg,

Super!

Und die wäre?! :coder:


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