![]() |
Fenster Größe ändern ohne Border
Ist es irgendwie möglich, dass der Anwender die Größe eines Fensters ändern kann, wenn Border auf "None" steht? Oder kann man Titelzeile und den dicken Rahmen bei Border = Sizeable ausblenden?
|
Re: Fenster Größe ändern ohne Border
Ja, es ist möglich, allerdings nicht so einfach. Vielleicht solltetst su etwas über WM_NCxxx-Messages lesen, da kannst du Non-Client Bereich verwalten.
|
Re: Fenster Größe ändern ohne Border
eigentlich ganz einfach wenn man weiß wie:
Delphi-Quellcode:
die 4 steht für den Bereich in welchem das ganze anfassbar ist zum strecken. Das diagonale Strecken ist allerdings hier noch nicht drinn, ist aber einfach zu erweitern..
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
[...] procedure TSBMainForm.WMNCHitTest(var Msg: TWMNCHitTest); begin DefaultHandler(Msg); with Msg do // TOP if PtInRect(Rect(0, 0, Width, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTop // LEFT else if PtInRect(Rect(0, 0, 4, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htLeft // BOTTOM else if PtInRect(Rect(0, Height - 4, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottom // RIGHT else if PtInRect(Rect((Width - 4), 0, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htRight // TOPLEFT else if PtInRect(Rect(0, 0, 4, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTopLeft // TOPRIGHT else if PtInRect(Rect((Width - 4), 0, Width, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTopRight //BOTTOMLEFT else if PtInRect(Rect(0, (Height - 4), 4, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomLeft // BOTTOMRIGHT else if PtInRect(Rect((Width - 4), (Height - 4), Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomRight // Bewegen ohne Titlebar //else if RESULT = HTCLIENT then // RESULT := htCaption else inherited; end; |
Re: Fenster Größe ändern ohne Border
Zitat:
Danke :-D PS: Zitat:
|
Re: Fenster Größe ändern ohne Border
Hi
Vielen Dank für den Code! Wie schon gesagt funktionierte das diagonale Strecken nicht. Hier der korrigierte Code mit allen 8 Streckrichtungen:
Delphi-Quellcode:
Danke nochmal!
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
... procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest); begin DefaultHandler(Msg); with Msg do // TOPLEFT if PtInRect(Rect(0, 0, 4, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTopLeft // TOPRIGHT else if PtInRect(Rect((Width - 4), 0, Width, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTopRight // BOTTOMLEFT else if PtInRect(Rect(0, (Height - 4), 4, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomLeft // BOTTOMRIGHT else if PtInRect(Rect((Width - 4), (Height - 4), Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottomRight // TOP else if PtInRect(Rect(0, 0, Width, 4), Point((XPos - Left), (YPos - Top))) then RESULT := htTop // LEFT else if PtInRect(Rect(0, 0, 4, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htLeft // BOTTOM else if PtInRect(Rect(0, Height - 4, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htBottom // RIGHT else if PtInRect(Rect((Width - 4), 0, Width, Height), Point((XPos - Left), (YPos - Top))) then RESULT := htRight // Bewegen ohne Titlebar {else if RESULT = HTCLIENT then RESULT := htCaption} else inherited; end; MfG, Coder90 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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