![]() |
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? |
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; |
Hallo Christian!
Wow, Danke :hello: |
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... |
Ja eine solche Lösung gibt es. Nur ist die umständlicher als die von Christian.
|
@jbg,
Super! Und die wäre?! :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz