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.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Ambiente MDI
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Ambiente MDI
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.
>
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.
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Ambiente MDI
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.
>>
>
>
>
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.
>>
>
>
>
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Ambiente MDI
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.
>>>
>>
>>
>>
>
>
>
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.
>>>
>>
>>
>>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Ambiente MDI
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
> 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
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Ambiente MDI
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
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
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Ambiente MDI
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
>
>
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
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com