Saludos
jorodgar!
Hice la prueba con el código que publicó
roman y a mi si me funcionó bien (me respetó el color). Eso sí, la prueba la hice con el RichEdit de Delphi y no con el RXRichEdit porque no lo tengo (aunque no creo que tenga que ver).
Código Delphi
[-]
var
Start: Integer;
begin
RichEdit1.SelAttributes.Color:=clRed;
RichEdit1.Lines.add('hola esto es una prueba');
RichEdit1.SelAttributes.Color:=clblue;
RichEdit1.lines.add('para www.clubdelphi.com');
Start := RichEdit1.FindText('prueba', 0, Length(RichEdit1.Text), []);
if Start <> -1 then
begin
RichEdit1.SelStart := Start;
RichEdit1.SelLength := Length('prueba');
RichEdit1.SelText := 'demo';
end;
end;
(Verás que se respeta el color de la línea donde sustituyo "prueba", o por lo menos a mí me lo respeta).