![]() |
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 ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 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