Ver Mensaje Individual
  #7  
Antiguo 13-07-2004
Patxi Patxi is offline
Miembro
 
Registrado: nov 2003
Posts: 12
Reputación: 0
Patxi Va por buen camino
Perdona, pero no se trata exactamente de eso, simplemente he utilizado tu respuesta para simplificar. El problema es, siguiendo utilizando parte de tu ejemplo:

Type
TForm1 = Class(TForm)
..
Private
FEnProceso : Boolean;
FCancelado : Boolean;
..

Implementation

Procedure TForm1.bProcesarClick(Sender : TObject);

Var
i : Longint;

Begin
FEnProceso := True;
FCancelado := False;
try
InicializarProceso;
DeshabilitarControles;
For i := 1 to 2147483647 do
Begin
RealizarIteracionDelProceso;
Application.ProcessMessages;
if FCancelado Then
Break; // paramos el proceso
End;
if Not FCancelado Then
ProcesoTerminadoConExito;
else
RealizarAccionesParaCancelar;
finally
FEnProceso := False;
HabilitarControles;
end;
End;

Olvidándonos de los botones de Cancelar y Cerrar y poniendo otro:

TForm1.ClickButton1(Sender: TObject);
begin
.... (CA) Parte del Codigo ...
while FEnProceso do Application.ProcessMessages; ??
begin
.... (CB) Resto del Codigo ...
end;
end;

La pregunta es cómo esperar a que FEnProceso sea False para seguir el código CB es decir que haya terminado el bProcesarClick.


E imaginación le he echado toda la que tengo.

Por cierto, cómo se hace para encerrar el código en una cajita en estos mensajes?

Saludos.
Responder Con Cita