Buenasss, igual esto ahora no sirve de mucho, pero yo me vi en un caso parecido e identifiqué el texto a reemplazar utilizando algún carácter significativo, tal como así...
'
Estimado cliente, hoy [FECHA_ACTUAL] le informo de... bla bla bla'
Una vez decidido esto implementé así (+ o -) el código para reemplazar el 'macro' por la fecha actual, sin perder el formato del texto:
Código:
procedure TForm1.DoMacroFecha;
var SS: TStringStream; // <- <- <- <-
begin
SS := TStringStream.Create('');
with RxRichEdit1 do
try
Lines.SaveToStream(SS);
SS.Seek(0, soFromBeginning);
SS.WriteString(StringReplace(SS.DataString, '[FECHA_ACTUAL]', DateToStr(Date), [rfReplaceAll]));
SS.Seek(0, soFromBeginning);
Lines.LoadFromStream(SS);
finally
FreeAndNil(SS);
end;
end;
Obviamente con este código existe el mismo problema comentado de reemplazar algún valor clave del texto enriquecido, yo no contaba con esa desventaja al utilizar 'macros', así que probablemente no sea lo más óptimo para el caso, pero os dejo la curiosidad del
TStringStream y su propiedad más interesante
DataString.
Un saludo a todos