La funcion Format no es el problema. El problema es que el RichEdit solo te permite acceder al texto enriquecido manipulando todo a traves de Streams. Del mismo modo que si al guardar el valor en algun lado (ej en una tabla de una base de datos) usaras algo asi
Código Delphi
[-]
procedure GuardarTextoRichEdit(RichEdit: TRichEdit);
var
qry: TQuery/TADOQuery/, cualquier tipo de query
begin
qry.SQL.Text := asignar sql para actualizar o insertar el campo;
qry.ParamByName('p1').DataType := ftBlob;
qry.ParamByName('p1').AsString := RichEdit.Text;
qry.Execute;
end;
Por eso te preguntaba como lo guardabas. Para guardarlo lo haces de la manera correcta, usando Streams.
Ahora el problema esta en como lo "recuperas" de la base de datos
Yo cree la siguiente aplicacion de prueba, que solo tiene un RichEdit y en lugar de una base de datos utilizo un archivo en el disco rigido, pero el concepto es el mismo:
Primero cree un boton que genera dicho archivo de texto, le copie y pege el mismo texto que el de tu mensaje y luego hice click en el boton para ejecutar este codigo:
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
Stream: TStringStream;
begin
Stream := TStringStream.Create;
try
RichEdit1.Lines.SaveToStream(Stream);
RichEdit1.Lines.SaveToFile('C:\Users\Agustin\Desktop\richedit.txt');
finally
Stream.Free;
end;
end;
Esto me genero un archivo con el siguiente contenido:
Código:
{\rtf1\ansi\ansicpg1252\deff0\deflang11274{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}}
\viewkind4\uc1\pard\f0\fs24 "Que el estudiante %s identificada con documento de identidad n\'famero %s, curs\'f3 y aprob\'f3 en este centro educativo, el grado de %s de b\'e1sica primaria durante el a\'f1o lectivo de %s, de conformidad con la ley 115 de 1994 y el decreto 1290 de 2009 y los criterios definidos en el sistema institucional de evaluaci\'f3n de estudiantes (SIEE) obteniendo las valoraciones finales exigidas para la aprobaci\'f3n al grado %s y promoci\'f3n al grado %s de %s "\par
}
Si ahora cargo ese contenido en un RichEdit lo que veo es lo siguiente:
Luego uso los botones de la barra superior para aplicarle formato en negrita a las partes que dice "%s". Si vuelvo a guardar ese contenido lo que me queda ahora es tu plantilla:
Código:
{\rtf1\ansi\ansicpg1252\deff0\deflang11274{\fonttbl{\f0\fnil\fcharset0 Segoe UI;}}
\viewkind4\uc1\pard\f0\fs24 "Que el estudiante \b %s\b0 identificada con documento de identidad n\'famero \b %s\b0 , curs\'f3 y aprob\'f3 en este centro educativo, el grado de \b %s \b0 de b\'e1sica primaria durante el a\'f1o lectivo de \b %s,\b0 de conformidad con la ley 115 de 1994 y el decreto 1290 de 2009 y los criterios definidos en el sistema institucional de evaluaci\'f3n de estudiantes (SIEE) obteniendo las valoraciones finales exigidas para la aprobaci\'f3n al grado \b %s \b0 y promoci\'f3n al grado \b %s \b0 de\b %s \b0 "\par
}
Este Texto se muestra de la siguiente manera en el RichEdit:
Para cargar texto con formato en el RichEdit es a la inversa que para guardar: usando Streams.
El siguiente codigo hace lo que necesitas, la unica diferencia es que yo uso un FileStream para cargar la plantilla:
Código Delphi
[-]
procedure TForm1.FormCreate(Sender: TObject);
var
ReadStream, FormatStream: TStringStream;
FileStream: TFileStream;
begin
FileStream := nil;
ReadStream := nil;
FormatStream := nil;
FileStream := TFileStream.Create('C:\Users\Agustin\Desktop\richedit.txt', fmOpenRead);
try
ReadStream := TStringStream.Create;
ReadStream.LoadFromStream(FileStream);
FormatStream := TStringStream.Create(
Format(ReadStream.DataString, ['bla', 'bla', 'bla', 'bla', 'bla', 'bla', 'bla']));
RichEdit1.Lines.LoadFromStream(FormatStream);
finally
FileStream.Free;
ReadStream.Free;
FormatStream.Free;
end;
end;
Resultado:
