Yo lo hacía de la siguiente forma:
Código Delphi
[-]
procedure FListado.Negrita (var Rich : TRichEdit; Texto : string; Posicion : integer);
var
Pos : integer;
begin
Pos := Rich.FindText(Texto, Posicion, 1000, []);
Rich.SelLength := 0;
Rich.SelStart := Pos;
Rich.SelLength := length(Texto);
Rich.SelAttributes.Style := [fsBold];
Rich.SelLength := 0;
Rich.SelAttributes.Style := [];
end;
En el informe tenemos TQRRichText enlazados con TRichEdit mediante la propiedad ParentRichEdit, en el beforePrint de la banda del TQRRichText que quieras lo que se hace es asignarle el texto que quieras (sin formato) al control TRichEdit y luego se llama a la función Negrita tantas veces como quieras.. ejemplo:
Código Delphi
[-]
MiRichText.Lines.Clear;
MiRichText.Lines.Add('Esto es un ejemplo de formateado');
Negrita(MiRichText,'un ejemplo', 0);
Con esto se consigue poner negrita a las palabras "un ejemplo" que se encuentren en el texto del control MiRichText desde el origen (posicion inicial de busqueda 0). Ojo, solo lo hace para la primera ocurrencia de ese texto, si quisieras también que lo hiciese en caso de que ocurriese más adelante debes volver a llamar a la función Negrita cambiando el tercer parámetro (antes 0) por una posición de inicio de la búsqueda más avanzada.
Ten cuidado con mayúsculas y minúsculas porque la función busca el texto exacto.
Espero te sirva.
Un saludo.