![]() |
Fenster am Rand andocken
Hallo,
ich habe da mal eine Frage. Wie kann ich ein Fenster am Rand andocken? Also ganz konkret meine ich, dass man das Fenster nicht über den Rand oben und links hinaus ziehen kann. Ich hoffe ich kommte kurz erklären, was ich meine. MFG Christian18 |
Re: Fenster am Rand andocken
Andocken kannst du ein Fenster einfach über die eigenschaft ScreenSnap von TForm. Ich glaube über SnapBuffer kann man definieren, ab welchem Abstand das Formular andockt. Bin mir aber jetzt nicht ganz sicher wie das heißt ;)
Dann kann man das Formular aber trotzdem noch außerhalb des Desktops schieben... Da musst du wohl eine manuelle überprüfung vornehmen :gruebel: |
Re: Fenster am Rand andocken
Hallo,
ok, das funktioniert schon mal super. Und wie kann mache ich dass, damit ich ein fenster nicht über den rand hinaus schieben kann? Wenn ich folgendes mache, dass bilkt das fenster immer.
Delphi-Quellcode:
if Form1.Left <= 0 then Form1.Left:=0;
MFG Christian18 |
Re: Fenster am Rand andocken
Zitat:
Delphi-Quellcode:
private
{ Private declarations } procedure WMMoving(var msg: TWMMoving); message WM_MOVING; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMMoving(var msg: TWMMoving); var screenArea: TRect; begin screenArea := Screen.WorkareaRect; if msg.lprect^.Left < screenArea.left then OffsetRect(msg.lprect^, screenArea.Left - msg.lpRect^.Left, 0); if msg.lprect^.Top < screenArea.top then OffsetRect(msg.lprect^, 0, screenArea.Top - msg.lprect^.Top); if msg.lprect^.Right > screenArea.Right then OffsetRect(msg.lprect^, screenArea.right - msg.lprect^.Right, 0); if msg.lprect^.Bottom > screenArea.Bottom then OffsetRect(msg.lprect^, 0, screenArea.bottom - msg.lprect^.Bottom); inherited; end; Falls dein Delphi TWMMoving nicht erkennt dieses so deklarieren:
Delphi-Quellcode:
(
type
TWMMoving = record Msg: Cardinal; fwSide: Cardinal; lpRect: PRect; Result: Integer; end; ![]() |
Re: Fenster am Rand andocken
bedenke die mögliche Existenz von mehreren Monitoren :evil:
mit der von Toms genannten Methode kann ich das Fenster nämlich nur auf dem einem (den Primär-) Monitor verwenden. screen-area bildet nur den ersten Monitor ab...da mein Primärmonitor rechts steht, sind die Positionswerte auf dem zweitmonitor negativ. Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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