Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Text selbst formatieren und in ein TRichEdit einfügen?


gitta - So 08.01.06 19:11
Titel: Text selbst formatieren und in ein TRichEdit einfügen?
Hallo Zusammen,

über die Suche bin ich nicht wirklich weiter gekommen obwohl mehrer Einträge
das Thema behandeln. Ich hoffe ich darf meine Frage dennoch stellen.

Ich habe ein TRichEdit welchen leer sein kann ober bereits RTF Text enthält.
Wie kann ich bitte einen Text formatieren und in das TRichEdit einfügen,
unabhängig davon, ob bereits RTF Text im TRichEdit enthalten ist oder nicht?

Ein Beispieltext:
Firma: Musterfirma GmbH
Strasse: Musterstrasse 16
PLZ: 0815
Ort: Musterdorf

Die Bezeichner "Firma:, Strasse:, PLZ: und Ort:"
sollten in Arial 10, Rot und Fett dargestellt werden.
Die Werte wie "Musterfirma GmbH" in Arial 10, Schwarz und nicht Fett.

Hat mir bitte jemand ein Code-Schnipsel?

Lieben Dank schon mal.

Gruß Gitta


galagher - So 08.01.06 20:08
Titel: Re: Text selbst formatieren und in ein TRichEdit einfügen?
user profile icongitta hat folgendes geschrieben:
Wie kann ich bitte einen Text formatieren und in das TRichEdit einfügen,
unabhängig davon, ob bereits RTF Text im TRichEdit enthalten ist oder nicht?Gruß Gitta

Schau dir mal die Eigenschaft SelAttributes an!


gitta - So 08.01.06 21:27

ok, ich habe jetzt mein Problem gelöst.
So funkts.




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
{--------------------------------------------------------------------------}
{}procedure TForm1.FormatRTFAdress(RichEdit:TRichEdit; ident,value:String);
{--------------------------------------------------------------------------}
 var
  aParaFormat: TParaformat2;
begin
  FillChar(aParaFormat, SizeOf(aParaFormat), 0);
  aParaFormat.cbSize := SizeOf(aParaFormat);
  with RichEdit do
  begin
    SelAttributes.Color := clRed;
    SelAttributes.Size := 8;
    SelAttributes.Style:=[fsBold];
    SelText := ident;

    SelAttributes.Color := clblack;
    SelAttributes.Size := 8;
    SelAttributes.Style:= [];
    SelText := value +#13#10;
    
    Perform(EM_SETPARAFORMAT, 0, lParam(@aParaFormat));
  end;


end;{FormatRTFAdress}


Gruß Gitta


Lannes - So 08.01.06 23:19

Hallo,

die Zeilen bzgl. Paraformat kannst Du Dir sparen, sie sind in diesem Zusammenhang nicht erforderlich.
Das betrifft die Zeilen: 4,5,7,8 und 21 in Deinem Code.
Für das setzen der Schriftfarbe und des Bold-Styles reicht SelAttributes vollkommen aus.


Delphi-Quelltext
1:
2:
3:
4:
5:
 var  
  aParaFormat: TParaformat2;  
begin  
  FillChar(aParaFormat, SizeOf(aParaFormat), 0);  
  aParaFormat.cbSize := SizeOf(aParaFormat);
Mit den Zeilen hast Du nur die Struktur initialisiert,
aber keine Formatänderungen bei z.B .dwMask vorgenommen.
Folglich ist die Zeile 21 auch überflüssig,
in der Du das nicht benötigte und nicht ausreichend initialisierte ParaFormat setzt.

Die Benutzung von TParaformat2 ist erst dann erforderlich,
wenn man Formatierungen vornehmen will die über die Möglichkeiten von
SelAttributes(TTextAttributes-Objekt >> Schriftattribute) und
Paragraph(TParaAttributes-Hilfsobjekt >> Absatzformate) hinnausgehen.

TParaformat2 benötigst man z.B. wenn Aufzählungen (1. 2. 3. ... o.ä.) im RichEdit vorgenommen werden sollen,
denn mit Paragraph.Numbering kann man nur Bullets anzeigen.