![]() |
Event Fenster verschieben?
Hallo,
welches Event könnte ich benutzen, wenn ein Fenster verschoben wird. TForm biete irgendwie kein onMove oder so. Danke Minz |
Ähnlich der Lösung in folgenden Beitrag, allerdings musst Du auf SC_MOVE anstatt von SC_MINIMIZE, SC_CLOSE reagieren.
![]() ...:cat:... |
daaanke :mrgreen:
|
das funzt net :(
Delphi-Quellcode:
Hab fast alles übernommen, er zeigt weder die Message, noch belegt er die Variablen.
procedure TForm1.WMSYSCOMMAND(var Msg: TMessage);
begin { WM_SYSCOMMAND abfangen } if Msg.Msg = WM_SYSCOMMAND then begin { wParam prüfen } case Msg.wParam of SC_MOVE: begin ShowMessage('Fenster wurde beweg'); FensterPosX:=Form1.Left; FensterPosY:=Form1.Top; Inherited; end; else { alle anderen Fälle weiterreichen an die standard Fensterprozedur } Inherited; end; end; end; Minz |
Wäre auch zu schön gewesen. :mrgreen: Aber ich habe eine Lösung gefunden und(!) getestet.
Delphi-Quellcode:
...:cat:...
private
{ Private declarations } procedure WMMOVE(var Msg: TWMMove); message WM_MOVE; ..... procedure TForm1.WMMOVE(var Msg: TWMMove); begin inherited; ShowMessage('g'); end; |
super danke :mrgreen: habs auch getestet
und funzt... wusste nicht, dass das Fenster am Anfang schon gleich 3 mal bewegt wird :shock: :hello: Minz |
Re: Event Fenster verschieben?
Hi, es funktioniert wirklich gut.
Gibt es auch ein Event das vor dem Verschieben gestartet wird? Ich wollte, dass meine Form beim verschieben, wie bei WinAmp, an den Bildschirmrand gezogen wird. Das geht auch, aber man sieht das die Form erst verschoben wird und danach erst meine Prozedure aufgerufen wird. |
Re: Event Fenster verschieben?
Moin!
Dann nimm die Botschaft WM_MOVING und darin kannst du das Rechteck deines Fenster auch anpassen und somit das schieben beschränken und auch diesen "Docking" Effekt einbauen. MfG Muetze1 |
Re: Event Fenster verschieben?
Zitat:
dafür gibt es ab Delphi 7 die Eigenschaft ScreenSnap von Deiner Form :) mfG mirage228 |
Re: Event Fenster verschieben?
Echt geil, danke
|
Re: Event Fenster verschieben?
Hi ich hab zu dem Thema auch nochmal eine Frage.
Ich habe eine Klasse, nennen wir sie mal KlasseX, die eine Variable: TForm besitzt, sprich FormX: TForm. Formx erstelle ich dann zur Laufzeit mit vom Benutzer ausgewählten Werten (Top, Left, Hight, Width, etc), also durch FormX := TForm.Create(Formx) etc. Nun meine Frage. Wie kann ich dem Eventhandler sagen, dass er die WMMove, oder OnMove wie auch immer man die procedure nennt, Procedure auf FormX anwenden soll und nicht, so vermute ich, auf die Klasse KlasseX? D. h. das zz. nichts passiert wenn ich die zur Laufzeit erstellt Form bewege trotz der Procedure. Die Procedure ist btw in der KlasseX aufgeführt/definiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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