Hola.
Te pongo un ejemplo sencillo como para darte una idea. Genera diez líneas, cada una de ochenta caracteres seleccionados de forma aleatoria con una espera de 50 ms simulando una tarea y mostrando el mensaje que solicitas mientras la realiza.
Al finalizar sobreescribe el mensaje con la línea armada y continúa con las siguientes del mismo modo.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
const
TOPE = 80;
var
i,j : Integer;
s : string;
begin
Randomize;
Memo1.Clear;
for i := 0 to 10 do
begin
s := '';
Memo1.Lines.Add(s);
for j := 1 to TOPE do
begin
s := s + Chr(65+Random(26));
Memo1.Lines[i] := Format('Calculando...%4.0f %%',[j*100/TOPE]);
Sleep(50);
Application.ProcessMessages;
end;
Memo1.Lines[i] := s;
end;
end;
Saludos.