Eigenschaft: Constraints (TLabel)

Verweis: Align AutoSize
Uses: StdCtrls
Eingabe: Ganzzahl:Integer
Ausgabe: Begrenzung in Bildpunkten
Funktion: Minimal- und Maximalbegrenzung der Komponente der Höhe und Breite.

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie drei TLabel auf die Form. Wenn sie nicht wissen wie man mehrere Komponenten des gleichen Typs auf die Form bringt, dann schauen sie bitte hier. Erstellen Sie zusätzlich ein OnActivate-Ereignis.

procedure TForm1.FormActivate(Sender: TObject);
begin
  //Abmaße des Fensters
  Form1.Width := 400;
  Form1.Height := 300;
  //Linke Seite der Label auf 0
  Label1.Left := 0;
  Label2.Left := 0;
  Label3.Left := 0;
  //Label zur Anschauung einfärben
  Label1.Color := clAqua;
  Label2.Color := clFuchsia;
  Label3.Color := clLime;
  //Label Abmaße
  Label1.Align := alTop;
  Label1.Constraints.MaxWidth := 200;
  Label2.Align := alRight;
  Label2.Constraints.MinWidth := 180;
  Label3.Top := 100;
  Label3.Constraints.MinWidth := 150;
  Label3.Constraints.MinHeight := 150;
  Label3.AutoSize := True;
end;

In unserem Beispiel legen wir zunächst die Maße des Fensters mit 400×300 Bildpunkte fest. Danach schalten wir zunächst alle Label mit Left:=0 zum Fenster linksbündig. Das Einfärben der Label mit color erhöht die Aussagekraft des Programms.

Constraints mit TLabel.
Constraints mit TLabel.

Label1

Nun kommen wir zu dem Thema Constraints. Normalerweise erstellt die Eigenschaft Align:=alTop ein Label mit voller breite des Clients (hier das Fanster). Dies wurde jedoch durch Constraints.MaxWidth := 200 verhindert.

Label2

Die Eigenschaft Align:=alLeft lässt das Label 2 rechtsbündig abschließen. Dadurch wir die Einstellung Left:=0 ignoriert. Durch die Einstellung von Constraints.MinWidth := 180 sagen wir, dass wir eine Mindestbreite von 180 Pixeln haben. Dabei interessiert es nicht ob wir das Label2 vorhe auf Autosize:=True gestellt haben. Solange der Text von Label2 kleiner als 180 Pixel ist, tritt AutoSize nicht in Aktion. Des weiteren werden Sie sich wohl wundern, dass der pinkfarbene Bereich nicht bis nach oben zum Fensterrand geht. Obwohl das Label1 begrenzt ist, scheint die Eigenschaft Align:=alTop doch den gesamten oberen Bereich des Fenster in Anspruch zu nehmen. Wenn auch hier nur auf Mausklicks im Label1 (Aquafarbe) reagiert wird.

Label3

Bei Label3 haben wir die Mindesthöhe und -breite auf 150 gesetzt. Selbst wenn wir dann im Anschluss AutoSize auf true setzen bleiben die Einstellungen von Constraints erhalten. Er wenn die Größe des Textes die 150×150 Bildpunkte übersteigt wird AutoSize aktiv. So lange wir dies nicht mit der Constraints-Eigenschaft MaxWidth oder MaxHeight beschränken.

Objektexplorer-Einstellungen

Alle Angaben im Quelltext, können Sie auch bequem über den Objektinspektor eingeben. Damit entfällt der Quelltext.

Constaints Einstellung über den Objektinspektor.
Legen Sie die minimlen und maximalen Werte über den Objektinspektor fest.

Um das untergeordnete Menü zu erreichen, klicken Sie auf den Pfeil im blauen Rahmen.

Lazarus Constaints im Objektinspektor aufgeklappt.
Wie immer, zum aufklappen auf den Pfeil klicken.

Bei den 4 Abmaßen sind ganze Werte zwischen 0 und 2147483647 (Integer) erlaubt. Wenn Sie z.B. für MinWidth einen höheren Wert wie für MaxWidth angeben, dann wird Ihr Eingegebener Wert auch für MaxWidth übernommen. Das Gleiche gilt auch für MaxHeight, sowie in Richtung Minimum. Der Wert 0 ist default (Standard) und schaltet die Begrenzung aus.

Automatische Werteübernahme

Die nächste Funktion könnte für Sie unter der Prämisse sinnvoll sein, wenn Sie ein Label haben ohne dies auf AutoSize zu stellen. Hiermit haben Sie die Möglichkeit das Label von den Abmaßen auf Ihre WuDie nächste Funktion könnte für Sie unter der Prämisse sinnvoll sein, wenn Sie ein Label haben ohne dies auf AutoSize zu stellen. Hiermit haben Sie die Möglichkeit das Label von den Abmaßen auf Ihre Wunschgröße im Entwurf einzustellen. Wenn Sie nun wollen das Ihr Label auf keinen Fall größer wird dann, klicken Sie mit der rechten Maustaste auf den Eintrag Constraints im Objektexplorer.

Constaints Sonderfunktion in Lazarus.
Besondere Funktion von Constraints: jetzige Werte festlegen.

Hier können Sie nun die maximalen Werte von Ihrem Label übertragen. Nach der Aktion ist width=MaxWidth und height=MaxHeight. Wenn Sie nun AutoSize auf True setzen, dann wird die Größe Ihres Labels nicht überschritten. Es handelt sich hierbei um eine Eingabehilfe, so brauchen Sie die Zahlenwerte nicht mühselig übertragen.