PDA

Ver la Versión Completa : Cerrar formularios


FunBit
08-09-2005, 17:36:24
Hola compañeros,

sólo escribo para hacer una consulta, ahí va,...

Es normal que en el procedimiento OnClose de mi formulario principal se ejecute sól el codigo Action := caFree; y después o antes de ejecutar esto el flujo de ejecucion de la aplicación no entre al evento OnClose del formulario hijo?

El problema de fondo es que tengo un formulario hijo que no se cierra al cerrar el padre, dejando la aplicación en ejecución (sin que pase nada en intentar cerrar la aplicación). Lo bueno es que sólo me pasa con un formulario hijo, con todos los demas la aplicación funciona correctamente.

Alguna idea de lo que puede fallar?

Yo sigo investigando, cuando encuentre la solución os cuento!

Gracias des de ya!

yusnerqui
08-09-2005, 19:17:54
Segun la ayuda de Delphi:

Note: When the application shuts down, the main form receives an OnClose event, but any child forms do not receive the OnClose event.


por eso yo prefiero tener un procedimientico que me asegure que todo marchará bien:

procedure TPrincipal.CerrarTodas;
var i : integer;
begin
if MDIChildCount > 0 then
For i := 0 to MDIChildCount-1do
MDIChildren[i].Close;
end;

y en el evento onClose:

procedure TPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CerrarTodas;
Action := caFree;
end;


Espero que esto te sirva

Saludos.

FunBit
09-09-2005, 11:31:59
Hola

Reconozco que en el enunciado del problema había poca información, pero buscaba ideas por dónde empezar a buscar la solución, que finalmente encontré.

El problema era que en el formulario hijo se quedaba el focus en un objeto TTreeView y des del padre no dejaba cerrar con Action:=caFree.

La solución:
-En el evento OnCloseQuery cambiar el foco a otro componente del form hijo.

Grácias yusnerqui por tu ayuda, lo probé, pero tampoco funcionaba y por casualidad después de hacer la prueba con tu código encontré la solución!