Ver Mensaje Individual
  #5  
Antiguo 20-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
No creo sea buena idea usar el OnActivate.

Si estas en tu ventana MDI, cambias a otra aplicación (bloc de notas por ejemplo) y vuelves a tu MDI, se volvería a crear otra ventana de tipo TFAsientos. Supongo que no es lo que quieres, así que olvidamos el evento OnActivate.

¿Qué versión de delphi usas?, ya por ahí puede venir el problema.

La solución que se ha usado en circunstancias parecidas, es lo propuesto por roman: crear un mensaje AFTERSHOW (busca en el foro).

La razón es que deberías usar el evento OnShow del fsMDIForm para mostrar la ventana TFAsientos, pero Delphi no te deja mostrar u ocultar ventanas en el evento OnShow, de ahí que se use un nuevo mensaje.



Por otro lado están el tema de dueños (AOwner). Si tus ventanas MDIChild van a crearse y destruirse, debes tener especial cuidado con establecer el dueño, o quizás no asignarle ninguno (pasando al parámetro un nil).

Ejemplo: Creas una ventana mdiChild asignando el dueño a Application y después en el evento OnClose le asignas Action := cafree, es decir, le dices que se destruya de memoria la ventana mdiChild cuando se pulse en la X.

A continuación ejecutas tu aplicación, abres y cierras tu ventana mdiChild y después, cierras tu ventana principal, por ende, el objeto Application es destruido, y como es dueño de la ventana mdiChild, intentará destruirla de nuevo, obtiniendo una Violación de Acceso a memoria.

guglu: ¿Puedes probar este supuesto en BDS2006? Gracias.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 20-10-2007 a las 11:30:53.
Responder Con Cita