Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Form dockt on Screen (https://www.delphipraxis.net/160831-form-dockt-screen.html)

barese 3. Jun 2011 10:08

Form dockt on Screen
 
Hallo Coders !

Ich benutze diesen Code um meine Form an den Screen zu docken.
Funzt auch super auf jeder Auflösung, doch möchte ich jetzt die Procedur mit einem Button aktivieren und deaktivieren können und weiss nicht wie..
...oder geht denn das überhaupt.?

Hilfe Leute...


Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure OnMove(var aMsg:TWMMove);message WM_MOVE;

Delphi-Quellcode:
procedure TForm1.OnMove(var aMsg:TWMMove);
begin if Form1.Left < 20 then Form1.Left:=0;
   if Form1.Top < 20 then Form1.Top:=0;
   if Form1.Left+Form1.Width > Screen.Width-20 then
   Form1.Left:=Screen.Width-Form1.Width;
   if Form1.Top+Form1.Height > Screen.Height-20 then
   Form1.Top:=Screen.Height-Form1.Height;
end;

shmia 3. Jun 2011 10:19

AW: Form dockt on Screen
 
Du brauchst einfach eine Boolean-Variable (im Bereich private deines Form)
mit dem du das "Magnetic-Snap" Verhalten an- und abschalten kannst.
Wichtig ist auch, dass du nicht über die globale Variable Form1 auf die Daten zugreifst.
Delphi-Quellcode:
procedure TForm1.OnMove(var aMsg:TWMMove);
begin
   if not FMagneticSnap then Exit;

   if Left < 20 then Left:=0;
   if Top < 20 then Top:=0;
   if Left+Width > Screen.Width-20 then
     Left:=Screen.Width-Width;
   if Top+Height > Screen.Height-20 then
     Top:=Screen.Height-Height;
end;

ConnorMcLeod 3. Jun 2011 10:20

AW: Form dockt on Screen
 
Die Form bekommt ein boolesches property.
Der Button verändert dieses property.
Die OnMove-Prozedur nimmt auf dieses property Rücksicht.
Oder?

Ups, zu spät ;-)

barese 3. Jun 2011 10:25

AW: Form dockt on Screen
 
@ConnorMcLeod .. ich glaube ich bin mir nicht sicher.

@shmia..

sieht gut aus aber wie kann ich diese Procedur für ein Button anwenden.?

rollstuhlfahrer 3. Jun 2011 10:33

AW: Form dockt on Screen
 
Also: Die Form hat schon diese Funktion: Das nennt sich dann ScreenSnap.

Für den Button könntest du es mit Button.Parent versuchen.

Bernhard

barese 3. Jun 2011 10:38

AW: Form dockt on Screen
 
@Bernhard...

mit Button.Parent .. kenne ich mich leider nicht aus.
Man jetzt bin ich überfordert. :(

Hast du vieleicht ein Beispiel für mich.?

rollstuhlfahrer 3. Jun 2011 10:45

AW: Form dockt on Screen
 
Du willst doch wissen, ob dein Button sich dem Rand von der Form befindet. Da jetzt die Form nicht unbedingt das Elter von dem Button sein muss, sondern dass z.B. auch ein Panel Elter sein darf, müsste man sich mit Hilfe von Button.Parent das TControl holen, gegen welches man prüfen muss.

Heißt: Du ersetzt in deinem Code die Form mit dem Button und weil du nicht unbedingt wissen musst, wo der Button drauf liegt, ersetzt du Screen mit "Button.Parent". Das sollte dann schon reichen.

Bernhard

barese 3. Jun 2011 10:50

AW: Form dockt on Screen
 
@Bernhard

Missverständniss .. ich will nur mit dem Button die Dock on Screen funktion ausschalten, so das die Form wieder über de screen gezogen werden kann mehr nicht.!

Gustav.R 3. Jun 2011 11:12

AW: Form dockt on Screen
 
In dein Buttonclick Shimas

FMagneticSnap := not FMagneticSnap;

rein und beim Initialisieren der Form entweder

FMagneticSnap := true oder
FMagneticSnap := false rein.

barese 3. Jun 2011 11:14

AW: Form dockt on Screen
 
@Gustav.R ... goil jau.

jetzt kann ich den Button anwenden.

Und das auch noch mit dein ersten Beitrag cool. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz