Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Exclamation Abrir MDIChild desde otro

Buenas gente del foro

Estoy realizado mi primer proyecto MDI, y venia bien hasta que me encontre con este problema. Necesito ejecutar una ventana MDIChild desde otra, pero que la segunda no dependa de la primera sino que dependa del formulario principal.
Les cuento un poco más para que me entiendan.

Los formualrios MDIChild se crean a partir de un formulario base donde tienen todas las propiedades, además tienen un ID interno, y cada vez que creo uno le asigno un ID ques el que le corresponde en un vector del tipo Boolean para saber si está creado o no, esto es para que los formularios se creen solamente una vez y si están creados no lo haga de nuevo sino que lo muestre. hasta ahí vamos bien, porque a cada formulario lo creo desde el formulario principal, el problema surge cuando necesito crear un formulario MDIChild desde otro MDIChild y que dependa del formulario principal, ya que cuando cierro el primer fomulario también lo hace el segundo.

Espero que me puedan entender y ayudar Saludos
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #2  
Antiguo 23-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola totote, seguramente cuando creas el formulario lo haces de esta forma:

Código Delphi [-]
 FormHijo := TFormHijo.Create(Self);
 FormHijo.Show;

donde con Self le estas indicando que su dueño sera el formulario del cual lo estas llamando es por eso que al cerrar ese formulario también se cierra (libera) el otro. En vez de Self puedes utilizar Application.

Código Delphi [-]
 FormHijo := TFormHijo.Create(Application);
 FormHijo.Show;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 23-09-2008 a las 15:54:14.
Responder Con Cita
  #3  
Antiguo 23-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por totote Ver Mensaje
...ya que cuando cierro el primer fomulario también lo hace el segundo.
Créalo utilizando como parámetro Owner: Application.MainForm
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 23-09-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Hola Caro y Neftali, primero gracias por contestar.
Les cuento que buscando un poco mas justo de Parent que me imagino que hace referencia a que el dueño será el mismo que su dueño, probe con los tre (Parent, Application, Application.MainForm) y funciona con los tres, ya que estamos en tema, cual de los tres les parece mejor o mas eficiente.

Saludos y nuevamente gracias por contestar
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #5  
Antiguo 23-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por totote Ver Mensaje
(Parent, Application, Application.MainForm) y funciona con los tres, ya que estamos en tema, cual de los tres les parece mejor o mas eficiente.
Eficientes todos, la diferencia está en lo que quieras hacer.

Parent: Estarás asignando el parent del formulario actual como owner del nuevo; En tu caso el parent del primer form, que dependerá de cómo lo hayas creado.
Application: Asigna como owner este objeto.
Application.MainForm: Asignas como owner el form principal de la aplicación.

Al cerrar la aplicación y cerrar el formulario principal creo que van siempre juntos (ahora mismo no se me ocurre otra cosa a no ser que hayas hecho cosas muy raras supongo), de forma que ambas son equivalentes.
El primer puede ser equivalente a los otros dos, dependiendo de cómo hayas creado el primer formulario.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 23-09-2008 a las 17:34:46.
Responder Con Cita
  #6  
Antiguo 23-09-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Gracias Neftali por la respuesta son cosas para tener en cuenta en el futuro

Saludos
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #7  
Antiguo 23-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Parent: Estarás asignando el parent del formulario actual; En tu caso el Parent del primer form, que dependerá de cómo lo hayas creado.
Application: Asigna como parent esta clase.
Application.MainForm: Asignas como parent el form principal de la aplicación.
Lo que yo entiendo es que Owner no es lo mismo que Parent, ya que el primero es el dueño o propietario de lo que se esta creando, el cual sera encargado de liberar todo lo que le pertenece cuando este sea liberado, mientras que parent (padre) es un contenedor, pueden llegar a ser el mismo tanto como el Owner o el Parent pero el Parent si nosotros queremos lo podemos cambiar.

Cuando el dueño es Application, una vez que finaliza la aplicación liberara el formulario que te has creado o lo que hayas creado.

Cuando el dueño es Application.Main, una vez que se libere tu form principal se libera también tu formulario si es que no lo has liberado ya.

Con el Parent, la verdad nunca lo habia hecho. ¿Neftali cual llegaría a ser el padre de un formulario, es Application?

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 23-09-2008 a las 17:04:37.
Responder Con Cita
  #8  
Antiguo 23-09-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Caro Ver Mensaje
Lo que yo entiendo es que Owner no es lo mismo que Parent, ya que el primero es el dueño o propietario de lo que se esta creando, el cual sera encargado de liberar todo lo que le pertenece cuando este sea liberado, mientras que parent (padre) es un contenedor, pueden llegar a ser el mismo tanto como el Owner o el Parent pero el Parent si nosotros queremos lo podemos cambiar.
Tienes toda la razón. Al escribir fui poniendo Parent donde quería poner Owner.
He corregido en rojo los cambios.


Cita:
Empezado por Caro Ver Mensaje
Con el Parent, la verdad nunca lo habia hecho. ¿Neftali cual llegaría a ser el padre de un formulario, es Application?
El Parent de un formulario MDI es nil. Por la tanto el owner del nuevo (si se crea con el parámetro parent) será también nil. No fallará, puesto que esto es posible, sólo que habrá que tener en cuenta cómo se destruye.

Perdón por el lío.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 23-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
El Parent de un formulario MDI es nil. Por la tanto el owner del nuevo (si se crea con el parámetro parent) será también nil. No fallará, puesto que esto es posible, sólo que habrá que tener en cuenta cómo se destruye.
Ahora me ha quedado claro Neftali, muchas gracias por responder . Totote si lo haces con el parent, como te dice Neftali tienes que tener en cuenta la parte de la destrucción ya que no habría ningún propietarío que lo destruya o libere.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #10  
Antiguo 24-09-2008
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Entonces creo que lo haré con Application.Main.
Gracias por la ayuda
Saludos
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
MDIChild abre otro MDIChild Paulao Varios 6 10-04-2008 18:02:05
como abrir mi particion con clave desde otro pc gulder Varios 9 17-03-2008 23:52:02
Abrir un MDIForm desde otro gabrio OOP 4 02-10-2007 15:47:54
Abrir archivos desde la red con otro usuario OzzyzzO Varios 0 01-03-2007 17:19:36
Editar Toolbar desde MDIChild? PirataPR OOP 1 18-12-2004 22:11:16


La franja horaria es GMT +2. Ahora son las 07:47:13.


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
Copyright 1996-2007 Club Delphi