Wenn du so RichEdit1.Text lädst, dann lädst du ja jedesmal den gesamten Text von RichEdit immer wieder neu ...also werden Format-Informationen, die da mit dem alten Text assoziiert waren, auch jedesmal wieder mit überschrieben, also gelöscht. Und das RichEdit1.Text auf der rechten Seite der Zuweisung ist dann natürlich auch wieder nur ein normaler String ohne Format-Infos.
Wenn du nur eine einzelne Zeile ansprechen willst, könnte das ungefähr so aussehen:
Delphi-Quellcode:
procedure markLineNo(LineIndex : integer; clColor : TColor; MarkLen : integer = 0);
begin
with form1.RichEdit1 do begin
SelStart := Perform(EM_LINEINDEX,LineIndex,0);
if MarkLen = 0 then SelLength := Perform(EM_LINELENGTH,SelStart,0)
else SelLength := MarkLen;
SelAttributes.Color := clColor;
end;
end;
Bei fehlendem MarkLen-Wert in der übergebenden Parameterliste würde dann die gesamte Zeile markiert.