Ver Mensaje Individual
  #5  
Antiguo 28-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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; // obsérvese que no es ShowModal
frmAvanceActualizacion.Refresh; // forzamos el pintado de la ventana antes del ciclo

while ... do
begin
  {
    código de actualización
  }

  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
Responder Con Cita