Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Colorful text in the same line in TRichEdit

How to write text in the same line but with different color? (I use richedit).

procedure TForm1.btnEClick(sender: TObject);
begin

  m0.SelAttributes.Color := clBlue;
  m0.SelAttributes.Style := [fsBold];
  m0.lines.add('This is blue and it is bold');
  m0.SelAttributes.Color := clGreen;
  m0.SelAttributes.Style := [fsBold];
  m0.lines.add ('This is Green and it is bold');
  m0.lines.add('');
  m0.lines.add('But how to write text in the same line with different color?');
  // i want to have both blue and green in the same line 
end;

Best Wishes, Bee

like image 371
Bianca Avatar asked Nov 25 '13 05:11

Bianca


2 Answers

You're on the right track. Just change SelAttributes and use SelText instead of Lines.Add:

procedure TForm4.FormCreate(Sender: TObject);
begin
  RichEdit1.Clear;
  RichEdit1.SelAttributes.Color := clBlue;
  RichEdit1.SelAttributes.Style := [fsBold];
  RichEdit1.SelText := 'This is bold blue text.';
  RichEdit1.SelAttributes.Color := clRed;
  RichEdit1.SelAttributes.Style := [fsItalic];
  RichEdit1.SelText := #32'This is italic red text';
end;

This produces

Sample output from code above

like image 115
Ken White Avatar answered Nov 10 '22 01:11

Ken White


if you are using themes... answer above won't work..
you cannot see any colors... till you remove seFont from styles..

RichEdit1.styleElements:=richedit1.styleElements-[seFont];

eg.

....
amsg:='Hola';

RichEdit1.SelStart := Length(RichEdit1.Lines.Text);
RichEdit1.SelAttributes.Color := acolor;
RichEdit1.Lines.Add(amsg + sLineBreak);
RichEdit1.SelLength := Length(amsg + sLineBreak);
like image 1
Zen Of Kursat Avatar answered Nov 10 '22 02:11

Zen Of Kursat