Einzelnen Beitrag anzeigen

Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#1

Firemonkey Form Constraints

  Alt 30. Apr 2015, 09:50
Hallo zusammen,

ich habe vor ein paar Wochen mein erstes kleines Programm mit Firemonkey geschrieben. Nun möchte ich verhindern, dass mein Formular unter eine bestimmte Größe verkleinert werden kann. Bei VCL gibt es dazu entweder die Property Constraints, mit der man die minimale Höhe und Breite festlegen kann oder man verwendet das OnCanResize-Event, um das Verändern der Größe zu verbieten, wenn man eine zu kleine Höhe oder Breite hat bzw. man setzt dort die neue Größe auf die minimal gewünschte Größe, falls die minimale Größe unterschritten wird.

In Firemonkey gibt es leider weder die Constraints für Formulare noch das OnCanResize-Event. Stattdessen habe ich im Internet ein paar andere Lösungen gesehen, die aber immer Nebeneffekte besitzen. Beispielsweise kann man das OnMouseUp-Event auslösen, wenn man die Größe mit der Maus zur Minimalgröße gezogen hat.
Eine andere Lösung, die ich im Moment verwende, ist, im OnResize-Event die Größe auf die Minimalgröße zu setzen, wenn die Minimalgröße unterschritten wird. Das führt jedoch natürlich zu einem flakerndem Formular, da die Größe zwei mal direkt hintereinander verändert wird, einmal durch die Maus und einmal durch das OnResize-Event selbst.

Hat jemand eine Idee, wie man das Problem mit möglichst geringem Aufwand beheben kann?

Anbei schicke ich noch ein Minimalbeispiel von meinem Problem.

Ich verwende im Moment Delphi XE8 Professional.

Gibt es evtl. noch ein Event, das vor dem OnResize-Event aufgerufen wird? Dann könnte ich dort versuchen, aus der Mausposition zu bestimmen, ob die Größe nach dem Resize-Event zu klein ist und dort schon reagieren, in dem ich die Größe auf die Minimalgröße setze.

Edit: Mir ist gerade aufgefallen, dass ich mich im Titel Vertippt habe: Es sollte natürlich "Form" und nicht "From" heißen.
Angehängte Dateien
Dateityp: zip ResizeDemo.zip (68,8 KB, 6x aufgerufen)

Geändert von mkinzler ( 6. Mai 2015 um 05:13 Uhr) Grund: Threadtitel korrigiert
  Mit Zitat antworten Zitat