![]() |
Delphi-Version: 5
Label Font soll sich an dem Text ausrichten
Hallo, ich schreibe gerade ein kleines Programm. Jedoch hab ich grad ein kleines Problem.
Ich habe 1 Editfeld. Und ein Label. Jetz hab ich das so gemacht, dass wenn man was ins Editfeld schreibt, dies auch im Label angezeigt wird. Das Problem ist nur, dass das Label immer länger wird bis es abgeschnitten wird. Ich wollte das so lösen, dass sich die Font.Size an eine festgelegte Breite des Labes anpasst und so immer kleiner wird, wenn man mehr schreibt und wieder größer wenn man weniger schreibt. Nur weiß ich leider nicht wie ich das anstellen soll, da ich grade erst in der Anfangsphase bin. Ich hoffe, dass mir jemand helfen kann. |
AW: Label Font soll sich an dem Text ausrichten
Das Label passt sich mit seiner Größe automatisch dem Inhalt an. Wenn du dann den Text zuweist, ändern sich die Maße des Labels. Dann kannst du die Breite auswerten und solange bei .Font.Size die Schriftgröße kleiner stellen, bis .Width kleiner als dein Grenzwert ist. Ums einfach zu machen, würde ich immer mit einem festen Startwert anfangen. Du kannst natürlich auch zuerst die Schriftgröße größer werden lassen.
Bernhard |
AW: Label Font soll sich an dem Text ausrichten
*edit*
Also ich will nicht, dass das Label sich dem Text anpasst, sondern dass der Text sich dem Label anpasst. *edit* Ich hab verstanden worauf du hinauswolltest xD. Ich machs mal mit einer Schleife. Hättest du vielleicht einen Vorschlag um wie viel ich die Size immer veringern soll? |
AW: Label Font soll sich an dem Text ausrichten
Den kleinstmöglichen Wert: 1 (Size ist ja ein Integer).
Wenn du was anderes ausprobieren willst (-> Size mit Nachkommastellen wie z.B. aus Word bekannt) dann addiere doch +1 zu .Font.Height dazu. Bernhard ADD: Ich glaub, ich bring mich gerade selbst durcheinander (diese bescheuerte Emba-Online-Hilfe). Also Size ist bei dir hoffentlich positiv und Height dementsprechend negativ. Dann gibt Size die Größe in Punkten an und meine Hilfe stimmt. |
AW: Label Font soll sich an dem Text ausrichten
Ja das ist das Problem. Size ist ein Int Wert. Ich würd die Size gerne nur um 0.1 veringern.
Also könnte ich das jetzt so machen, dass ich Size um 1 veringer und dafür bei Heigth um 1 erhöhe? |
AW: Label Font soll sich an dem Text ausrichten
Size und Height hängen zusammen (Hilfe konsultieren). Size kannst du nur um 1 verringern. Wenn du Height veränderst hast du (auf Grund der Formel) eine wesentlich höhere Genauigkeit. Was dann am Ende für eine Textgröße rauskommt, musst du dir selbst errechnen.
Bernhard |
AW: Label Font soll sich an dem Text ausrichten
Also, ich schaffs nicht. Ist zu hoch für mich. Ich hatte das leider viel leichter in Erinnerung mit Ruby. Aber bei mir klappt einfach nix. Ich möchte eig. nur dass das Labelfenster konstante Werte hat, und die Schrift die da drin ist, sich dem Fenster anpasst. Aber tdem Danke für deine Hilfe
|
AW: Label Font soll sich an dem Text ausrichten
zeig mal, was du hast
Bernhard |
AW: Label Font soll sich an dem Text ausrichten
Das ist fies. Und außerdem a) nicht hilfreich UND b) völlig abweichend vom Thema. Wenn du trollen willst, dann nehm wenigstens den anderen Thread um das nicht eskalieren zu lassen.
Bernhard |
AW: Label Font soll sich an dem Text ausrichten
Zunächst einmal sollte Label.Autosize auf false gesetzt werden.
dann wird der auszugebene Text mit Label.Canvas.Textwidth() und Label.Width geprüft und ggf. der Font vergrößert oder Verkleinert. Gruß K-H P.S. Ich bin Autofahrer, interessiert sich jemand für meinen Führerschein? |
AW: Label Font soll sich an dem Text ausrichten
@vergessen
Ich hätte nicht gedacht, dass hier so Kiddys unterwegs sind. @Topic Ich hab das vorhin alles verworfen, weil es voller Fehler war. Ich setze mich jetz nochmal dran. Vielleicht wird es diesmal etwas besser klappen. Wenn ich Fortschritte gemacht habe, werde ich diese hier reinposten. *edit* Ja genauso hab ich es ja auch gemacht. Das Problem ist nur, dass man den Font nur in 1 Schritten verkleinern kann. Gib es irgentwelche Möglichkeiten den Font im Kleinen Maß zu verkleinern/vergrößern? *edit2* Ich hab das jetz so einmal das On_Change Event des EditFeldes:
Code:
Und die Formel Prozedur:
procedure Tabc.ed_a_Change(Sender: TObject);
BEGIN TRY f_a := StrToFloat(ed_a.text); s_a := ed_a.text; EXCEPT ed_a.text := ''; f_a := 0; s_a := 'a'; END; la_formel.caption := s_a+'x²+'+s_b+'x+'+s_c+' = 0'; formel; END;
Code:
Irgentwas ist da falsch. Aber ich weiß nicht was. Ich bin noch Anfäger in solchen Sachen
PROCEDURE Tabc.formel;
BEGIN IF la_formel.Canvas.TextWidth(la_formel.caption) > la_formel.Width THEN BEGIN While la_formel.Canvas.TextWidth(la_formel.caption) > la_formel.Width DO BEGIN la_formel.Font.Size:= la_formel.Font.size -1; END; END ELSE BEGIN While la_formel.Canvas.TextWidth(la_formel.caption) < la_formel.Width DO BEGIN la_formel.Font.Size:= la_formel.Font.size +1; END; END; END; |
AW: Label Font soll sich an dem Text ausrichten
Zitat:
Wächst die Fontgröße ins unendliche? Wird überhaupt nichts mehr ausgegeben? Eine nähere Beschreibung wäre schon nicht schlecht. Gruß K-H |
AW: Label Font soll sich an dem Text ausrichten
Wenn ich ins Edit Feld 1 Ziffer eingebe, wird die Zahl normal im Label angezeigt. Nachdem ich jedoch die Zahl erhöhe, also 2 Ziffern da stehen habe, bleibt das Programm in einer Endlosschleife stehen.
|
AW: Label Font soll sich an dem Text ausrichten
Hast Du einmal einen Haltepunkt gesetzt und die Werte verfolgt?
|
AW: Label Font soll sich an dem Text ausrichten
Das funktioniert:
Delphi-Quellcode:
Es ist allerdings noch finetuning von Nöten.
procedure FontAnpass(var lab:tlabel;const width:integer;const text:string);
begin if lab.Canvas.TextWidth(text) > Width THEN BEGIN While lab.Canvas.TextWidth(text) > Width DO lab.canvas.Font.Size:= lab.canvas.Font.size -1; END ELSE BEGIN While lab.Canvas.TextWidth(text) < Width DO lab.canvas.Font.Size:= lab.canvas.Font.size +1; END; lab.Font.Size:=lab.Canvas.Font.Size; end;{------------------------------------------------------------------} Gruß K-H |
AW: Label Font soll sich an dem Text ausrichten
Wieso ist das Label als Var-Parameter deklariert?
|
AW: Label Font soll sich an dem Text ausrichten
Ich wollte vermeiden, daß nur ein Wert herüber kommt.
Gruß K-H |
AW: Label Font soll sich an dem Text ausrichten
Verstehe ich gerade nicht. Also was ich meinte, ist, dass man Objektinstanzen nicht als Var-Parameter übergibt, sondern allenfalls als const. Man will ja innerhalb der Routine nicht die Instanz an sich ändern, sondern nur deren Werte.
|
AW: Label Font soll sich an dem Text ausrichten
Wenn das so klappt, warum nicht?
Meine Kenntnisse über die Objektinterna sind wohl eher marginal. Gruß K-H |
AW: Label Font soll sich an dem Text ausrichten
Dann lass das "var" einmal weg, es wird immer noch klappen ;)
|
AW: Label Font soll sich an dem Text ausrichten
OK, wer lesen kann ist klar im Vorteil:
Zitat:
K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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