Thema: Delphi TLabel ½ Zeilenumbruch

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: TLabel ½ Zeilenumbruch

  Alt 24. Sep 2007, 09:27
Zitat von Balu der Bär:
Ok danke, habs jetzt selbst gezeichnet.
Na ja, geht auch, Du verzichtest aber auf die schönen Formatoptionen
Zitat von Balu der Bär:
Die RTF-Lösung war mir dann doch etwas suspekt und das Selberzeichnen anscheinend am einfachsten und schnellsten.
Öhm, na ja.

Delphi-Quellcode:
uses RichEdit;
...
Procedure TForm1.DrawRTFLines(aText: TStrings; aGap: Integer);
Const
// Einfach aus Wordpad geklaut, hier wird aber auch der Font gesetzt.
  sRTFPreamble = '\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fcharset0 Arial;}}'
    + '\viewkind4\uc1\pard\f0';
  sRTFLine = '\fs20 %s\par\fs%d\par'; // /fs20 = Fontgroße 10 (wieso da 20 stehen muss, k.A.)

Var
  sRTF: String;
  i: Integer;
  sText: TStringStream;
  P: TPoint;

Begin
// RTF-Code erzeugen
  sRTF := sRTFPreamble;
  For i := 0 To aText.Count - 1 Do
    sRTF := sRTF + Format(sRTFLine, [aText[i], aGap]);

// RTF muss per Stream/File in das Control geschrieben werden
  sText := TStringStream.Create(Format('{%s}', [sRTF]));
  Try
    RichEdit.Lines.LoadFromStream(sText);
  Finally
    sText.Free;
  End;
// Höhe des gesamten textes herausbekommen
  RichEdit.Perform(EM_POSFROMCHAR, Integer(@P), Length(RichEdit.Lines.text));
// Control anpassen
  RichEdit.Height := P.Y;
End;
Angehängte Dateien
Dateityp: rar rtfdemo_192.rar (181,1 KB, 4x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat