Página 1 de 1

Ambiente MDI

Publicado: Mar Jun 07, 2005 11:26 am
por Xevi
Hola,
¿Cómo hago para que un Form MdiChild, si ya está abierto, no se vuelva a
crear, y sólo tome el Foco de la aplicación???
Gracias.
Un Saludo,
Xevi.

Ambiente MDI

Publicado: Mar Jun 07, 2005 7:11 pm
por ignacio
Xevi,
Lo más fácil:
1) Utiliza una DATA en Main form con cada ventana MDI Child, por ejemplo:
oMiData
2) Cuando instancies la MDIChild asignas dicha DATA al formulario MDIChild:
oMiData := TFrmMdiChild():New()
3) En el evento OnClose de la MDIChild pon la DATA oMiData a nil
4) Para futuros accesos a dicha MDIchild primero comprueba que la DATA este
a NIL. Si no lo está simplemente haz oMiData:SetFocus()
Saludos,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:[email=42a56827@ozsrvnegro.ozlan.local...]42a56827@ozsrvnegro.ozlan.local...[/email]
> Hola,
>
> ¿Cómo hago para que un Form MdiChild, si ya está abierto, no se vuelva a
> crear, y sólo tome el Foco de la aplicación???
>
> Gracias.
>
> Un Saludo,
> Xevi.
>

Ambiente MDI

Publicado: Mar Jun 07, 2005 7:40 pm
por Xevi
Ignacio,
Es como lo estaba utilizando, pero por preguntar por si TMenu disponía de
una lista de Ventanas abiertas, pues igual con preguntar a TMenu... pero
nada, que así me sirve perfectamente...
Otra dudilla al respecto del Show cuando oMiData no es Nil... si tengo el
Form lCentered := .T., pues cada vez que hace el Show, si he movido la
ventana, me la vuelve al estado de inicio.. o sea me la centra... es un
pequeño detalle, pero si el usuario ha movido ventanas, al volver a visionar
una ventana que ya tenía abierta, se le desplaza al centro...
Gracias por vuestra atención...
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:42a5d54b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Lo más fácil:
>
> 1) Utiliza una DATA en Main form con cada ventana MDI Child, por ejemplo:
> oMiData
>
> 2) Cuando instancies la MDIChild asignas dicha DATA al formulario
> MDIChild: oMiData := TFrmMdiChild():New()
>
> 3) En el evento OnClose de la MDIChild pon la DATA oMiData a nil
>
> 4) Para futuros accesos a dicha MDIchild primero comprueba que la DATA
> este a NIL. Si no lo está simplemente haz oMiData:SetFocus()
>
> Saludos,
>
> "Xevi" <xevicomas@terra.es> escribió en el mensaje
> news:[email=42a56827@ozsrvnegro.ozlan.local...]42a56827@ozsrvnegro.ozlan.local...[/email]
>> Hola,
>>
>> ¿Cómo hago para que un Form MdiChild, si ya está abierto, no se vuelva a
>> crear, y sólo tome el Foco de la aplicación???
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>
>
>

Ambiente MDI

Publicado: Mié Jun 08, 2005 9:46 am
por ignacio
Xevi,
A mi modo de ver no tiene mucho sentido que el objeto TMenu 'entienda' de
listas de posibles ventanas que puedan sus menu items mostrar.
Obviamente tendrás que guardar tu las coorrdenadas en el evento OnClose y
restaurarlas en OnInitialize. También puedes poner todos los formularios
como lHideOnClose := .T. En dicho caso los formularios no se destruyen, sólo
se ocultan, y por lo tanto puedes recuperarlos en su mismo estado haciendo
Show() o un simple lVisible := .T.
Saludos,
"Xevi" <xevicomas@terra.es> escribió en el mensaje
news:42a5dc06$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Ignacio,
>
> Es como lo estaba utilizando, pero por preguntar por si TMenu disponía de
> una lista de Ventanas abiertas, pues igual con preguntar a TMenu... pero
> nada, que así me sirve perfectamente...
>
> Otra dudilla al respecto del Show cuando oMiData no es Nil... si tengo el
> Form lCentered := .T., pues cada vez que hace el Show, si he movido la
> ventana, me la vuelve al estado de inicio.. o sea me la centra... es un
> pequeño detalle, pero si el usuario ha movido ventanas, al volver a
> visionar una ventana que ya tenía abierta, se le desplaza al centro...
>
> Gracias por vuestra atención...
>
> Un Saludo,
> Xevi.
>
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
> news:42a5d54b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Xevi,
>>
>> Lo más fácil:
>>
>> 1) Utiliza una DATA en Main form con cada ventana MDI Child, por ejemplo:
>> oMiData
>>
>> 2) Cuando instancies la MDIChild asignas dicha DATA al formulario
>> MDIChild: oMiData := TFrmMdiChild():New()
>>
>> 3) En el evento OnClose de la MDIChild pon la DATA oMiData a nil
>>
>> 4) Para futuros accesos a dicha MDIchild primero comprueba que la DATA
>> este a NIL. Si no lo está simplemente haz oMiData:SetFocus()
>>
>> Saludos,
>>
>> "Xevi" <xevicomas@terra.es> escribió en el mensaje
>> news:[email=42a56827@ozsrvnegro.ozlan.local...]42a56827@ozsrvnegro.ozlan.local...[/email]
>>> Hola,
>>>
>>> ¿Cómo hago para que un Form MdiChild, si ya está abierto, no se vuelva a
>>> crear, y sólo tome el Foco de la aplicación???
>>>
>>> Gracias.
>>>
>>> Un Saludo,
>>> Xevi.
>>>
>>
>>
>>
>
>
>

Ambiente MDI

Publicado: Mié Jun 08, 2005 11:25 am
por jfgimenez
Xevi,
> Es como lo estaba utilizando, pero por preguntar por si TMenu disponía de
> una lista de Ventanas abiertas, pues igual con preguntar a TMenu... pero
> nada, que así me sirve perfectamente...
TMenu no, pero sí hay un array de ventanas MDI en ::oMdiClient:aForms. Pero
en cualquier caso, necesitarás de algo que identifique la ventana que vas a
abrir, p.ej. el título o algo así. Y al final, la solución más sencilla y
efectiva es la que te ha comentado Ignacio.
> Otra dudilla al respecto del Show cuando oMiData no es Nil... si tengo el
> Form lCentered := .T., pues cada vez que hace el Show, si he movido la
> ventana, me la vuelve al estado de inicio.. o sea me la centra... es un
> pequeño detalle, pero si el usuario ha movido ventanas, al volver a
> visionar una ventana que ya tenía abierta, se le desplaza al centro...
Es que, en Xailer, los formularios se crean cuando llamas a
TForm???():New(), y se destruyen cuando se cierran, salvo que uses
lHideOnClose := .T.; en este caso, al cerrar un formulario no se destruye,
sino que se oculta, como bien te ha dicho Ignacio.
--
Un saludo,
José F. Giménez

Ambiente MDI

Publicado: Lun Jun 27, 2005 2:18 am
por zeasoftware
me hago un poco pelotas, ya que solo una vez use el mdi con fw, alguien
tiene un ejemplo basico ya que son muy buena opcion para agilizar los
procesos de un sistema, en comparacion de DOS donde hay que cerrar y abrir.
Gracias desde ya.
ramonzea@yahoo.com

Ambiente MDI

Publicado: Lun Jun 27, 2005 9:46 am
por ignacio
Ramón,
Ejemplo samplesmdiMdiSample1
Saludos,
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje
news:[email=42bf1ba1@ozsrvnegro.ozlan.local...]42bf1ba1@ozsrvnegro.ozlan.local...[/email]
> me hago un poco pelotas, ya que solo una vez use el mdi con fw, alguien
> tiene un ejemplo basico ya que son muy buena opcion para agilizar los
> procesos de un sistema, en comparacion de DOS donde hay que cerrar y
> abrir.
>
> Gracias desde ya.
> ramonzea@yahoo.com
>
>