El 18-05-2013 18:11, lazarus-es-request en lists.lazarus.freepascal.org escribi�:
Show quoted text 24 lines
Estimados colegas:
estoy trabajando en una aplicacion, en una unit donde se hacen varios calculos, uno detras de otro.
tengo un label donde puedo escribir, al final de cada rutina de calculo, algo similar a esto:
lSecuencia.caption:=�Termine el calculo 1�;
pero necesito un comando que detenga el avance del programa por lo menos 500 milisegundos, para que de tiempo a leer mensaje del label.
conozco que hay un comando Delay(), pero no se como usarlo. Si me pueden ayudar, se los voy a agradecer.�
saludos,
Ing. H�ctor F. Fiandor Rosario
hfiandor en infomed.sld.cu
Para esos casos siempre me result� mejor usar DoEvents (VB6 o C#) o
Application.ProcessMessages (Delphi), ya que lo que necesitas no es una
pausa en tu proceso sino una indicaci�n de que hay que prestarle atenci�n a
la interfaz gr�fica.
Si el calculo es demasiado largo, te recomiendo correrlo en un thread
separado para que tu aplicaci�n no parezca congelarse.
Como te dicen en la respuesta 3 (adjunta), Con
Application.ProcessMessages, debiera ser suficiente sin necesidad de utilizar Delay.
Recuerdo que hace un tiempo tuve que procesar grandes cantidades de registroa contra una BD SQLServer, y al intentar leer solamente, no ten�a ni que mirar el PC para que no se cayera, me refiero que no pod�a utilizar ni siquiera otras aplicaciones, dado que apenas mov�a el cursor, aparec�a en el t�tulo de la vetana "No responde". Esta fu� mi soluci�n.
http://wiki.freepascal.org/Multithreaded_Application_Tutorial/es
Saludos,
Atentamente,
Omar Gonz�lez R.
Novacomp Ltda.
M�vil 56-9-95319230