Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Schriftgröße eines Labels abhängig von Länge? (https://www.delphipraxis.net/139184-schriftgroesse-eines-labels-abhaengig-von-laenge.html)

Larsi 25. Aug 2009 09:18


Schriftgröße eines Labels abhängig von Länge?
 
Hi,

ich habe für mein StreamZ eine Vollbildfunktion geplant welche den aktuellen Titel ganz groß anzeigen soll, damit man auch aus Entfernung den Titel sehen kann. Aber wie mache ich das, dass der Titel so groß ist wie bei der Länge des Titelnamens und der Auflösung des Monitors möglich ist, damit man alles sieht? Also der Titel soll nur auf einer Zeile sein. Weiß einer wie das geht?

MFG Lars Wiltfang

mirage228 25. Aug 2009 09:20

Re: Schriftgröße eines Labels abhängig von Länge?
 
Benutze Canvas.TextWidth und fahre die Font-Size solange herunter bis die Länge kleiner als die Bildschirmbreite ist, wobei Du bei einer Font-Größe schluss machen solltest :)

Larsi 25. Aug 2009 09:22

Re: Schriftgröße eines Labels abhängig von Länge?
 
Muss ich den Text dann auch über Canvas schreiben? Ich hab das jetzt nämlich mit einem Label gemacht.

Ralf Kaiser 25. Aug 2009 09:24

Re: Schriftgröße eines Labels abhängig von Länge?
 
Nein. Aber das Label benutzt den Canvas um sich selbst zu zeichnen. Daher kannst du den selben Canvas benutzen um zu messen welche Schriftgrösse du benutzen musst.

Larsi 25. Aug 2009 09:30

Re: Schriftgröße eines Labels abhängig von Länge?
 
Delphi-Quellcode:
label2.font.size := label2.Canvas.TextWidth(label2.caption);
So gehts schonmal nicht. Es wird viel zu groß gezeichnet man sieht nur 2 Buchstaben auf dem Formular. Wie muss das richtig heißen?

Die Muhkuh 25. Aug 2009 09:32

Re: Schriftgröße eines Labels abhängig von Länge?
 
Du brauchst ne For-Schleife, die font.size so lange verkleinert, bis die gewünschte Größe erreicht ist.

mirage228 25. Aug 2009 09:32

Re: Schriftgröße eines Labels abhängig von Länge?
 
Pseudo-Code -- aber eigentlich ist das genau das, was ich oben schon mit Worten erklärt habe -- wie Du auf Deinen Ansatz kommst, ist mir tatsächlich ein Rätsel:
Delphi-Quellcode:
MaxBreite := ...; // Von Dir zu ermitteln bzw. zu belegen
while (Label1.Canvas.TextWidth(DeinText) > MaxBreite) and (Label1.Font.Size > 2) do
  Label1.Font.Size := Label1.Font.Size - 1;
Viele Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.

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