Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con Form2.Parent=Form1; (https://www.clubdelphi.com/foros/showthread.php?t=64562)

Duc 07-04-2009 17:54:59

Problemas con Form2.Parent=Form1;
 
Hola a todos!

No sabía cómo expresar bien con el título mi problema :o.

Estoy desarrollando un prototipo de una aplicación, y necesitaba que hubiera un formulario padre y los formularios hijos dentro. Ya se que lo normal es utilizar FormStyle=MDIForm y MDIChild, pero no lo hago así.

Realmente no me acuerdo el problema que tenía, pero llegué a la conclusión que tenía que hacerlo manualmente asignando la propiedad Parent del formulario hijo (apuntando al formulario padre). Creo que los problemas venían debido a que los formularios tienen su propia forma (roundRect, no la de Windows), y los manipulo mucho para el aspecto gráfico.

Total! que resulta que cuando hago un click en un formulario que no es el que está en primer plano, no avanza, se queda detras. Es decir, abro los formularios Form1 y Form2 en ese orden, por supuesto, el Form2 está encima del Form1, pero sería de esperar que cuando se haga click sobre Form1 cambien de posición, y no es así.

Supongo que el problema viene dado a no utilizar MDI, y que lo tendré que controlar yo manualmente, pero no se por donde atacar.

Muchas gracias!!

delphi.com.ar 07-04-2009 18:08:09

1 Archivos Adjunto(s)
Hace mucho subí un ejemplo de algo similar a mi página, ahora esta caída por eso te lo adjunto. Por lo que veo las ventanas creadas dentro de otra ventana no MDI solo pasan al frente si haces click en el header, la solución que se me ocurre es sencilla, simplemente capturar los clicks de esta ventana y realizar un BringToFront.

Agregué un pedacito de código para que pase al frente la ventana por la que se desplaza el puntero.

Caro 07-04-2009 18:09:49

Cita:

Empezado por Duc (Mensaje 344218)
Total! que resulta que cuando hago un click en un formulario que no es el que está en primer plano, no avanza, se queda detras. Es decir, abro los formularios Form1 y Form2 en ese orden, por supuesto, el Form2 está encima del Form1, pero sería de esperar que cuando se haga click sobre Form1 cambien de posición, y no es así.

Hola, eso es lo que debería pasar si le estas asignando como padre el form1 osea que va estar contenido en Form1, en MDI pasa lo mismo, todos los hijos se cargan en el formulario padre, si quieres ver solo tu form1 cuando hagas click sobre este, entonces no le asignes como padre de tu form2 y muestra tu form2 con show cuando lo necesites

Saluditos

delphi.com.ar 07-04-2009 18:17:01

Cita:

Empezado por Caro (Mensaje 344229)
Hola, eso es lo que debería pasar si le estas asignando como padre el form1 osea que va estar contenido en Form1, en MDI pasa lo mismo, todos los hijos se cargan en el formulario padre, si quieres ver solo tu form1 cuando hagas click sobre este, entonces no le asignes como padre de tu form2 y muestra tu form2 con show cuando lo necesites

Por lo que yo entiendo, se refiere a que Form1 y Form2 son hijos de FormX.... Por eso no le resulta "natural" el funcionamiento.

Saludos!

Duc 07-04-2009 18:24:54

Ups! jeje

Exacto Delphi.com.ar, en ralidad la nomenclatura de mi ejemplo y del título no tiene nada que ver. Podría ser:

Padre: FormX
Hijo1: Form1
Hijo2: Form2

Código:

Form1.Parent := FormX;
Form2.Parent := FormX;

Cómo bien ha dicho Delphi.com.ar. Pues gracias! Esto ya lo había pensado, pero claro, entonces se tendrá que modificar el evento onClick de todos los componentes del formulario...

Bueno, voy a revisar tu código : )

Duc 07-04-2009 18:34:41

Perfecto! Me gusta como lo hiciste, tratando el mensaje directamente. Voy a hacerlo.

Muchas gracias! : )


La franja horaria es GMT +2. Ahora son las 07:41:52.

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