![]() |
WM_WindowPosChanging und Constraints
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
mit folgendem Code (Delphi 6 -> kein ScreenSnap verfügbar)werden meine Fenster auf dem Desktop gehalten und an den Rändern angedockt:
Delphi-Quellcode:
Das funktioniert an sich prima.
Unit Unit1;
Interface Uses Windows, Messages, Forms; Type TForm1 = Class(TForm) Private Procedure WMWindowPosChanging(Var Msg: TWMWindowPosMsg); Message WM_WindowPosChanging; End; Var Form1 : TForm1; Implementation {$R *.dfm} Procedure TForm1.WMWindowPosChanging(Var Msg: TWMWindowPosMsg); Const StickAt = 20; Var rWorkArea : TRect; Begin SystemParametersInfo(SPI_GETWORKAREA, 0, @rWorkArea, 0); With Msg.WindowPos^ Do Begin If X <= rWorkArea.Left + StickAt Then X:=rWorkArea.Left; If X + CX >= rWorkArea.Right - StickAt Then X:=rWorkArea.Right - CX; If Y <= rWorkArea.Top + StickAt Then Y:=rWorkArea.Top; If Y + CY >= rWorkArea.Bottom - StickAt Then Y:=rWorkArea.Bottom - CY; End; Inherited; End; End. Und wenn die Fenster keinen Größenbeschränkungen unterliegen (Constraints), dann klappt das auch beim Ändern der Größe. Sind die Constraints aber definiert, dann funktioniert die Begrenzung oben und links. Aber nicht mehr rechts und unten. Das Fenster kann dann - zwar nicht mit der Titelleiste, aber - mittels Ziehen am Rand so vergrößert werden, dass es aus dem Desktop-Bereich regelrecht "rausgeschoben" wird. Ich hoffe, das Problem einigermaßen verständlich umschrieben zu haben. Ich habe Code angehängt. Falls zum besseren Verständnis des Problems und damit niemand nur deshalb Delphi anwerfen muss die exe gewünscht wird, dann bitte mitteilen... Ich gehe eigentlich davon aus, dass die Grenzen durch die Zeilen
Delphi-Quellcode:
und
If X + CX >= rWorkArea.Right - StickAt Then
X:=rWorkArea.Right - CX;
Delphi-Quellcode:
klar gesetzt sind.
If Y + CY >= rWorkArea.Bottom - StickAt Then
Y:=rWorkArea.Bottom - CY; Wo liegt mein Denkfehler? Gruß, Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 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