(Co-Admin)
Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
Delphi 11 Alexandria
|
21. Apr 2003, 00: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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
|