Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Forma que no se cierra (https://www.clubdelphi.com/foros/showthread.php?t=70325)

rhino0nt 14-10-2010 18:27:54

Forma que no se cierra
 
Tengo un sistema MDI, al llamar una forma hija realizo en el evento FormShow() una validación para revisar si existen los registros suficientes para trabajar con la forma, si no existen se debe cerrar asi que efectuo la revisión y de ser 0 el resultado envío un mensaje y llamo la función Close, pero el mensaje aparece y la forma no se cierra, la forma aparece en pantalla, al hacer la depuración veo que se ejecuta la línea de Close pero nunca se efectua la acción, que estoy haciendo mal?

ecfisa 14-10-2010 19:52:11

Hola.

¿ Ya probaste asignando Action a caFree en el evento OnClose ?

Código Delphi [-]
procedure TForm1.MDIChildClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;



Saludos. :)

rhino0nt 14-10-2010 20:08:50

Solucionado
 
Lo solucione con este post de Roman:

Cita:


Una forma de hacerlo:

Código:
Código Delphi [-]
const
  CM_CLOSE = WM_USER + 1;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure CMClose(var Message: TMessage); message CM_CLOSE;
  end;

implementation

procedure TForm2.CMClose(var Message: TMessage);
begin
  ModalResult := mrOk;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  PostMessage(Handle, CM_CLOSE, 0, 0);
end;
PostMessage manda el mensaje pero sólo hasta que se procese el resto de mensajes, en este caso hasta que todos los mensajes necesarios para que el formulario termine de cargarse se procesen. Así, en el manejador del mensaje CM_CLOSE pones ya el valor deseado para ModalResult.

// Saludos
El problema es por el momento en que se llama el evento Close dentro del ciclo de vida de la forma, pero esto lo resuelve.

Gracias a todos.


La franja horaria es GMT +2. Ahora son las 17:02:43.

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