A nivel práctico, lo que comenta Neftalí sería:
Código Delphi
[-]
OnCreate()
LabelProgeso.Visible := False;
procedure ProcesaXML();
var
Registro : integer;
begin
LabelProgreso.Visible := True;
LabelProgreso.Caption := '';
Registro := 1;
try
while XML_tenga_datos do
begin
LabelProgreso.Caption := 'Procesando Registro Nro. ' + IntToStr(Registro);
Application.ProcessMessages;
...
Next_Dato_XML;
Inc(Registro);
end;
finally
LabelProgreso.Visible := False;
end;
end;
Yo suelo poner un panel con labels, memos para logs y barras de progreso que hago visible tapando o invisibilizando los otros paneles de la aplicación.