![]() |
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; |
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; |
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 ;-) |
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.? |
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 |
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.? |
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 |
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.! |
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. |
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 10:09 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