Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 29-09-2003
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¡Buen día!

Kaesbu:

Puedes utilizar el método ProcessMessages del objeto Application, llamándolo al final (y dentro) del ciclo. Por ejemplo:

Código:
For I := 1 To 1000000 Do
Begin
  ...(sentencias)...
  Application.ProcessMessages;
End;
ProcessMessages hace que la aplicación procese todos los eventos pendientes que le han llegado (como teclazos, clicks de ratón, avisos del sistema operativo, etc.). Extrae uno a uno los mensajes de su cola de mensajes pendientes. Cuando ya no hay ninguno que procesar, entonces vuelve y continúa con la rutina donde fue llamado.

Esto permite llevar a cabo ciclos de procesamiento que pueden ser algo lentos, sin que la aplicación deje de responder a las acciones del usuario.

No obstante, debe uno tener cuidado al utilizar el método ProcessMessages, ya que éste puede desencadenar de nuevo el ciclo que actualmente se está ejecutando, resultando en una doble ejecución simultánea del mismo proceso.

Ésto último se podría dar, por ejemplo, al ejecutar el ciclo en el evento OnClick de un botón, y luego durante el mismo, el usuario vuelve a presionar el mismo botón, el cuál es nuevamente accionado gracias a la llamada a Application.ProcessMessages.

Para evitar este problema, existen varias soluciones (como sucede siempre en la programación ). Una de ellas es inhabilitar el botón mientras ejecuta su proceso:

Código:
TForm1.Button1Click (Sender :TObject);
Begin
  Button1.Enabled := False;

  Try
    For I := 1 To 1000000 Do
    Begin
      ...(sentencias)...
      Application.ProcessMessages;
    End;
  Finally  
    { Se uitiliza Try..Finally para asegurar que el botón vuelva a
      habilitarse, aunque se eleve una excepción en el ciclo }
    Button1.Enabled := True;
  End;
End;
Al utilizar ProcessMessages, debe uno considerar las posibles acciones que el usuario pueda realizar, o mejor dicho, los eventos que el programa pueda procesar, durante la ejecución del ciclo, e inhabilitar o impedir aquellos procesos que pudieran alterar la ejecución normal de la aplicación.

Espero esto sea de utilidad. Seguimos en contacto.

Al González .

Última edición por Al González fecha: 29-09-2003 a las 23:19:40.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:11:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi