Hi Sebastian,
Es müsste so gehen:
1. Ermittle die Länge eines Buchtsabens mittlerer Breite 'm' in Pixel
2. Teile die Länge des Labels durch die mittlere Länge und erhältst die Anzahl der möglichen Zeichen im Label
3. Nur so viel Buchtaben ausgeben, wie nötig.
Delphi-Quellcode:
var
i,hsc, AnzChar, LenPix, middLen, ZeilenChar, AnzZeilen: INTEGER;
Rect: Trect;
begin
s:=Label1.Caption;
AnzChar := Length(s);
LenPix := Label1.width;
//Laenge Text
DrawText(Form1.Canvas.DC,
// handle to device context
'
m',
// m - buchstabe mit mitteler Länge
1,
// string length, in characters
Rect,
// pointer to structure with formatting dimensions
DT_CALCRECT);
hsc := rect.Bottom - rect.Top;
//Höhe Schriftart
middLen := rect.Right - rect.Left;
//Laenge von 'm'
ZeilenChar:= LenPix
DIV middLen;
//Anzahl der Buchstaben, die in eine Zeile passen
AnzZeilen:=Label1.Height
DIV hsc;
//Anzahl Zeilen
end;
Label1.Caption:='
';
If (ZeilenChar*AnzZeilen)>AnzChar
Then
Label1.Caption:=copy(s,1,(ZeilenChar*AnzZeilen)-4)+'
...'
else
Label1.Caption:=s;
end;
(ungetestet)
mfg
BrunoT