// Der folgende
Code stellt fest, wann das Verschieben eines Fensters ... public { Public-Deklarationen } procedure OnMoving(var aMsg: TMsg); message WM_MOVING; procedure WMNCHittest(var Msg: TWMNCHittest); message WM_NCHittest; end; var Form1: TForm1; implementation {$R *.DFM} var xx, yy: integer; moveflag: boolean = false; procedure TForm1.OnMoving(var aMsg: TMsg); begin inherited; if visible and not moveflag then begin moveflag := true; xx := left; yy := top; end; end; procedure TForm1.WMNCHittest(var msg: TWMNCHittest); begin if moveflag then begin if (left <> xx) or (top <> yy) then // machwas, z.B.: showmessage('Das Fenster wurde verschoben'); moveflag := false; end; inherited; end; // --------------------------------------------------- // Getestet mit RS 10.4 unter W11 // Auf Verschieben oder Größenänderung reagieren: type TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } procedure WMEITHEROR(var Msg: TWMNoParams); message WM_EXITSIZEMOVE; procedure WMSIZE(var Message: TMessage); message WM_SIZE; procedure WMMOVE(var Message: TMessage); message WM_MOVE; end; var Form1: TForm1; implementation {$R *.dfm} var MV: Boolean; procedure TForm1.WMEITHEROR(var Msg: TWMNoParams); begin inherited; case MV of True: ShowMessage('Moved'); else ShowMessage('Sized'); end; end; procedure TForm1.WMSIZE(var Message: TMessage); begin inherited; MV := False; end; procedure TForm1.WMMOVE(var Message: TMessage); begin inherited; MV := True; end; |
Zugriffe seit 6.9.2001 auf Delphi-Ecke