Breite von TLabels o.ä. "passend" machen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
dummy
Beiträge: 10
Registriert: Sa 28. Mär 2015, 02:05

Breite von TLabels o.ä. "passend" machen

Beitrag von dummy »

Hallo!

Ich habe da mal eine Anfängerfrage, auf die ich keine Lösung gefunden habe...

Ich möchte z.B. eine Progressbar mit folgender Information "beschriften":
"Bearbeite Element" [TLabel1] " von " [TLabelMax]

Gehen wir mal davon aus, dass die Elemente ziemich zahlreich werden können.
Macht man TLabel1 in der Breite zu klein, wird die Zahl (z.B. dreistellig)
"abgeschnitten". Macht man es zu gross, ist der Abstand zu TLabelMax zu gross.

Sprich: Es könnte zu folgenden Anzeigefehlern kommen:
* Bearbeite Element 1 von 123456 (erwünscht)
* Bearbeite Element 1 von 1234 (nicht erwünscht, da TLabelMax abgeschnitten)

Somit will ich den Fall
"Bearbeite Element 1 (hier kommen u.U. viele Leerzeichen) von 1234"
verhindern, so dass es immer korrekt dargestellt wird und lesbar ist.

Ich hoffe, das war nicht zu blöd erzählt...

Danke und Grüsse!

wennerer
Beiträge: 507
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Breite von TLabels o.ä. "passend" machen

Beitrag von wennerer »

Hi dummy,
hast du im Objektinspektor schon mal autosize auf true gestellt? Wäre das erste was ich probieren würde.
Gruß
Bernd

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Breite von TLabels o.ä. "passend" machen

Beitrag von wp_xyz »

Eine Progressbar beschriften? Soviel ich weiß, hat die gar kein Text-Feld dafür. Du musst dir ein Textfeld (TLabel oder TStaticText) über oder unter die Progressbar klicken und dann in dem Code, in dem die Progressbar hochgezählt wird, dessen Caption aktualisieren. Am einfachsten baust du dir den Text mit Hilfe der Format-Anweisung zusammen:

Code: Alles auswählen

procedure TForm1.UpdateProgessbar(NeuerWert: Integer);
begin
  Progressbar1.Position := NeuerWert;
  Label1.Caption := Format('Bearbeite Element %d von %d', [NeuerWert, Progressbar1.Max]);
end;

Du kannst natürlich auch 4 Labels für "Bearbeiten Element", den aktuellen Wert, "von" und den Maximalwert nebeneinander anordnen (wäre mir aber viel zu aufwendig...). Aktiviere AutoSize=true für jedes Label und verwende den Anker-Editor, um die Labels direkt aneinanderzugehängen. Wie das geht, kannst du z.B. diesem Video entnehmen: https://www.youtube.com/watch?v=neigk9Pt21o

dummy
Beiträge: 10
Registriert: Sa 28. Mär 2015, 02:05

Re: Breite von TLabels o.ä. "passend" machen

Beitrag von dummy »

Danke für die Tipps!

VG,
Dummy

Antworten