Hallo,
ich benötige eine Funktion die einen String so kürzt dass er bei Ausgabe auf einem Canvas eine bestimmte Breite nicht überschreitet. Wie man das macht ist mir auch klar, meine Frage ist eher: gibt es dafür in der LCL schon eine fertige Funktion? Bis jetzt ist mir nämlich keine mit einem passenden Namen untergekommen.
mfg
Micha
String kürzen in Abhängigkeit der Zeichenbreite
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
String kürzen in Abhängigkeit der Zeichenbreite
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 142
- Registriert: Sa 30. Jan 2010, 19:35
- OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
- CPU-Target: xxBit
Re: String kürzen in Abhängigkeit der Zeichenbreite
Mit tCanvas.Textwidth (String) : integer kann man für einen gegebenen String die Breite in Pixeln abfragen, ohne ihn auszugeben. Du mußt dann eine Schleife bauen und in der klein-Doofi-Variante immer einen Buchstaben weglassen, bis Du Deine Breitengrenze unterschreitest. Oder Du optimierst ihn geschwindigkeitsmäßig, indem Du mit größeren Schritten anfängst und dann kleinere Schritte verwendest (Regressionsalgorithmus): String halbieren, dann um ein Viertel länger bzw. kürzer, dann um ein Achtel usw. So gelangt man mit wenigen Schritten zum korrekten Ergebnis.
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: String kürzen in Abhängigkeit der Zeichenbreite
Du suchst nach DrawText() mit DT_ELLIPSIS (http://msdn.microsoft.com/en-us/library ... 85%29.aspx" onclick="window.open(this.href);return false;).
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: String kürzen in Abhängigkeit der Zeichenbreite
Jo, das passt. Allerdings hab ich keine Möglichkeit gefunden auf die drei Doppelpunkte zu verzichten oder ein alternatives Suffix an den String zu hängen. Aber das wäre wohl auch eher ein ungewöhnliches Vorhaben.Scotty hat geschrieben:Du suchst nach DrawText() mit DT_ELLIPSIS [...]
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: String kürzen in Abhängigkeit der Zeichenbreite
Dann bleibt dir nur eins: Du musst selbst eine Funktion schreiben.
MFG
Michael Springwald
Michael Springwald