Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#41

AW: Textlänge abschneiden

  Alt 18. Jun 2016, 18:27
Zitat:
Bei Arial würd' ich hier jetzt davon ausgehen, dass 57 i oder 25 W passen.
Ich denke das Problem liegt an der Herangehensweise.
Man muss sich nur mal diese Aussage anschauen.

Zitat:
// Ist von der Breite so angelegt, dass mit Courier New 8 genau 80 Zeichen hineinpassen
Label2.Caption := ShortenText( Edit1.Text, 80, CalculateFixedCharWidth );
Es passen also exakt 80 Zeichen in einer breite von 560 hinein.
Somit ist gewährleistet das egal welche Zeichen es sind diese immer eine fixe breite von 7 haben (560 div 80)

Wenn ich nun davon ausgehe das bei einer fixen Weite von 560

SongName := PAnsiChar(AnsiString(Ansimidstr(string(SongName),1, 80) + '...'));

80 Zeichen reinpassen dann wird mein SongTitel genau egal welche Zeichen dieser enthält (gleiche Breite pro Char)
100% und immer kurz vor meiner Zeitanzeige gezeichnet.

Jetzt ändere mal den Font wo die Zeichen nicht mehr gleich sind.
Tja nun dann ist diese Aussage nicht mehr rechtens
Zitat:
// Ist von der Breite so angelegt, dass mit Courier New 8 genau 80 Zeichen hineinpassen
es passen dann einfach keine 80 Zeichen mehr rein.
Das würde dann unweigerlich Fehlschlagen

SongName := PAnsiChar(AnsiString(Ansimidstr(string(SongName),1, 80) + '...'));

gruss
  Mit Zitat antworten Zitat