![]() |
Form die „BorderStyle := bsNone“ ist, in der Größe ändern?
Hallo Alle!
Kann man eine Form die „BorderStyle := bsNone“ ist, trotzdem in der Größe ändern? Gruß Heike |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Aber ja. Du musst nur den entsprechenden Code selbst schreiben. Wenn du eine randlose Form hast und schon ans Vergrößern denkst, hast du vermutlich schon den Code zum Verschieben geschrieben. Der Code zum Vergrößern ist dann auch nicht viel komplizierter.
|
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
Delphi-Quellcode:
Aber mit vergrößern - Verkleinern komme ich nicht weiter.
ReleaseCapture;
SendMessage(Handle, WM_SYSCOMMAND, $F012, 0); Gruß Klaus |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
Tipp: Setze Dich mit wParam auseinander... |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Oh, ich dachte jetzt gar nicht an diesen Syscommand-Kram. Wie s-off schreibt, solltest du den Code erstmal verstehen lernen. Was ich jedoch meinte, ist ein popeliger Code, der beim MouseDown Position und IsMoving speichert, beim MouseUp IsMoving aufhebt und im MouseMove im Falle von IsMoving die Koordinaten aktualisiert. Das ist sehr einfach, sobald man es einmal raushat, und dann kannst du es im Prinzip ohne größere Schwierigkeiten auf das Vergrößern erweitern. Ob es auch so ein Syscommand gibt fürs Vergrößern, weiß ich jedoch nicht.
|
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
So gehts:
Delphi-Quellcode:
Und dann die eigentliche Prozedur:
.
. . private { Private-Deklarationen } procedure NCHIT(var Msg : TWMNCHITTEST); message WM_NCHITTEST; . . .
Delphi-Quellcode:
Mit der Konstante a kann eingestellt werden, ab welchem Abstand des Cursors zum Rand vergrößert/verkleinert werden kann. In diesem Beispiel wird nur auf unten, rechts und die Ecke rechts-unten überprüft. Andere Seiten/Ecken gehen äquivalent. (ungetestet, sollte aber gehen) ;-)
procedure TForm1.NCHIT(var Msg : TWMNCHITTEST);
var p : Tpoint; const a = 9; var r,u : integer; begin p.x := msg.XPos; p.y := msg.YPos; p := screentoclient(p); msg.Result := HTCLIENT; {-} r := self.width - a; u := self.height - a; {-} if p.x > r then msg.Result := HTRIGHT; if p.y > u then msg.Result := HTBOTTOM; if PtInRect(Rect(r,u,self.width,self.height),p) then msg.Result := HTBOTTOMRIGHT; end; P@Tti |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
Gruß Klaus |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
Gruß Klaus |
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
|
Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
Zitat:
Der Aufruf, ist der Gleiche, wie auch beim Verschieben der Form. Überprüfen, an welcher Position der Form sich der Cursor gerade befindet, macht man dann, wie schon von patti beschrieben über die WM_NCHITTEST |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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