Autor Beitrag
gitta
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: So 08.01.06 19:11 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 08.01.06 20:08 
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!

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
gitta Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: So 08.01.06 21:27 
ok, ich habe jetzt mein Problem gelöst.
So funkts.



ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: 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.

ausblenden 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.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )