Thema: Delphi Text > Label?

Einzelnen Beitrag anzeigen

Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#13

Re: Text > Label?

  Alt 27. Jun 2005, 15:22
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
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat