En mi opinión, el proceso de actualización debería hacerse desde el formulario principal, dejando el otro sólo para mostrar el grado de avance. Yo procedería mas o menos así (desde el formulario principal):
Código Delphi
[-]
Self.Enabled := false;
frmAvanceActualizacion.ProgressBar.Max := NumeroDeRegistros;
frmAvanceActualizacion.Step := 1;
frmAvanceActualizacion.Show; frmAvanceActualizacion.Refresh;
while ... do
begin
frmAvanceActualizacion.ProgressBar.StepIt;
end;
frmAvanceActualizacion.Close;
frmAvanceActualizacion.Enabled := true;
Aquí, frmAvanceActualizacion sustituiría a Sincroniza y sólo tendría un ProgressBar y algún mensajito.
No podemos usar ShowModal porque entonces no se ejecutaría nada hasta no cerrar el formulario, pero impedimos la interacción con el formulario principal ponieno Enabled := false.
// Saludos