Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form die „BorderStyle := bsNone“ ist, in der Größe ändern? (https://www.delphipraxis.net/100905-form-die-%84borderstyle-%3D-bsnone%93-ist-der-groesse-aendern.html)

Code 5. Okt 2007 11:18


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

OregonGhost 5. Okt 2007 11:26

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.

Code 5. Okt 2007 11:33

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Zitat von OregonGhost
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.

Ja, zum verschieben habe ich:
Delphi-Quellcode:
  ReleaseCapture;
  SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
Aber mit vergrößern - Verkleinern komme ich nicht weiter.

Gruß
Klaus

s-off 5. Okt 2007 11:50

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Zitat von Code
Ja, zum verschieben habe ich:
Delphi-Quellcode:
  ReleaseCapture;
  SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);
Aber mit vergrößern - Verkleinern komme ich nicht weiter.

Weil Du den Code, den Du zum Verschieben nutzt, irgendwo kopiert, aber nicht verstanden hast, was er eigentlich tut.

Tipp: Setze Dich mit wParam auseinander...

OregonGhost 5. Okt 2007 11:52

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.

patti 5. Okt 2007 11:53

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
So gehts:

Delphi-Quellcode:
.
.
.
private
    { Private-Deklarationen }
    procedure NCHIT(var Msg : TWMNCHITTEST); message WM_NCHITTEST;
.
.
.
Und dann die eigentliche Prozedur:

Delphi-Quellcode:
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;
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) ;-)

P@Tti

Code 5. Okt 2007 12:24

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Zitat von s-off
Weil Du den Code, den Du zum Verschieben nutzt, irgendwo kopiert, aber nicht verstanden hast, was er eigentlich tut.

Tipp: Setze Dich mit wParam auseinander...

Das habe ich mir aus der MSM gesucht. Was sollte ich daran verstehen? Es verschiebt Fenster, mehr brauche ich nicht wissen. Wenn ich mir einen Button auf eine Form ziehe, muss ich auch nicht unbedingt verstehen wie Delphi das macht. Das ist ja einer der Gründe warum ich mir Delphi zugelegt habe. Ich kenne mich allerdings noch nicht so gut aus wie Ihr und muss noch viel Erfahrungen sammeln.

Gruß
Klaus

Code 5. Okt 2007 12:26

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Zitat von OregonGhost
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.

Habe ich versucht, ist zu abgehackt. Ruckelt beim ziehen.

Gruß
Klaus

OregonGhost 5. Okt 2007 12:27

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Habe ich versucht, ist zu abgehackt. Ruckelt beim ziehen.
Ich hab das schon öfter in verschiedenen Fenstersystemen eingesetzt. Da ruckelt überhaupt nichts.

s-off 5. Okt 2007 12:27

Re: Form die „BorderStyle := bsNone“ ist, in der Größe änder
 
Zitat:

Zitat von OregonGhost
Ob es auch so ein Syscommand gibt fürs Vergrößern, weiß ich jedoch nicht.

Wie bereits gesagt genügt es vollkommen, sich mit den Werten von wParam auseinander zu setzen.
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.
Seite 1 von 2  1 2      

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