Ver Mensaje Individual
  #8  
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
Acabo de probarlo en Delphi 7 y no da errores de memoria, de hecho se crean las dos ventanas, tanto la fsMDIFORM como la fsMDIChild.

aliciasampe: Por casualidad no tendrás visible := false en la ventana principal ¿no?. Lo digo, porque al ser una aplicación MDI se comporta de modo distinto a una aplicación SDI, y quizás haya incongruencias.

Aunque si tiene un efecto extraño el uso del evento OnActivate en el fsMDIFORM.

Pongamos el caso: en el evento Onactivate tenemos el código de crear las fsmdichild. Ejecutamos la aplicacion y se abre el fsmdiFORM y el fsmdichild. Nos vamos al bloc de notas y volvemos a nuestra aplicación, "el efecto raro", es que el fsmdiFORM no recibe el evento OnActivate, deduzco que lo recibe la ventana mdiChild que está abierta, por tanto, no se crea una nueva ventana mdiChild.

Cierro el mdichild, vuelvo al bloc de notas y después a nuestra aplicación, y se abre un nuevo mdichild. Ahora si recibe el evento OnActivate.

Para más efectos extraños, colocamos ahora un panel en el fsMdiFORM y volvemos a correr la aplicación, cuando demos un clic al panel (sin tener eventos programados en dicho panel) aparecerá una nueva ventana mdiChild.

Puesto que al abrirse una nueva ventana mdichild ésta recibe el foco, siempre que hagamos clic en el panel estamos dando el foco al MDIFORM de nuevo, por lo siempre hará saltar el evento.

Este comportamiento, aunque parezca extraño es normal en las ventanas MDIFORM, ya que internamente manejan 2 ventanas.

guglu: Lo de poner a nil el evento OnActivate, buena idea .

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