Ver Mensaje Individual
  #8  
Antiguo 15-01-2013
Avatar de Julián
Julián Julián is offline
Merodeador
 
Registrado: may 2003
Ubicación: en mi casa
Posts: 2.019
Reputación: 10
Julián Va por buen camino
Eso que te pasa no tiene nada de raro, pues estas tratando (tu o los componentes que usas) con eventos, con objetos, con threads, con apis de gestores de base de datos, etc. El flujo del programa puede que no sea tan lineal o estructurado como parece. Por eso newtron te dice que uses una llamada a Processmessages, que es algo asi como decirle al programa "¡Eh!, para un momento, haz lo que tengas pendiente, por ejemplo, actualizar los captions, y después sigues". Pero ese proccessmessages, que deberá estar después de modificar el caption y no antes, puede que no sea suficiente.

Creo que deberías actualizar los captions dentro de un evento, por ejemplo, dentro del evento SQLQuery1.OnOpen o BeforeOpen o AfterOpen o algo parecido. Incluso puede que debas incluir un .ProccessMessages tambien en dicho evento.

Ademas, si actualizas los captions en los eventos adecuados podrás estar seguro de que la información que muestran en correcta.

Como ejercicio practico del efecto que hace el proccessMessages que te recomienda Newtron puedes hacerte un form con un button y un label y el onclick del button hacer algo parecido a:

Código:
i :=0;
while for (i<5000) begin
  label1.caption := IntToStr(++i);
end;
y luego compararlo con

Código:
i :=0;
while for (i<5000) begin
  label1.caption := IntToStr(++i);
  Application.ProccessMessages;
end;
Un saludo!
__________________
"la única iglesia que ilumina es la que arde"
Anonimo
Responder Con Cita