Ver Mensaje Individual
  #6  
Antiguo 28-08-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.737
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Gracias por la bienvenida... he utilizado el foro para resolver muchos de mis problemas y pensé que sería bueno escribir algo para los demás.

Otra opción con 2 variables globales... en este caso, se llena QuieroCerrar, pero no se cierra y después del FormRepaint, si es True, se cierra.

Nuevamente, no aborta el FormRepaint, pero cerrará el form correctamente después de todo.

Espero que se parezca a lo que buscas.

(para acelerar el cierre, quizás puedas usar la variable global PuedoCerrar dentro del procedure FormRepaint para NO ejecutar ciertas cosas que tarden mucho.
ej. pseudocodigo
Código:
procedure FormRepaint
begin
   if PuedoCerrar then
      [primera cosa a realizar]
   if PuedoCerrar then
      [seguinda cosa a realizar]
   if PuedoCerrar then
      [tercera cosa a realizar]
   if PuedoCerrar then
      [primera cosa a realizar]
end
)

Variable global al form:
PuedoCerrar : boolean;
QuieroCerrar : boolean;

Código:
procedure TForm.FormActivate(Sender: TObject);
begin
   Self.OnActivate := nil;
   PuedoCerrar := False;
   QuieroCerrar := False;
   FormRepaint;
   PuedoCerrar := True;
   if (QuieroCerrar) then
      Close;
end;

procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if (PuedoCerrar) then
   begin
      Action := caFree;
      FormMain := nil;
   end else
   begin
      Action := caNone;
      QuieroCerrar := True;
   end;
end;

Última edición por duilioisola fecha: 28-08-2007 a las 14:34:48.
Responder Con Cita