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 05-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Exclamation Crear un form fsMDIForm y varios forms hijos

Hola amigos, necesito de su ayuda. Me encuentro en la situación de querer utilizar forms MDI (cosa que jamas he hecho). Tengo un form padre desde el cual necesito llamar algunos otros forms hijos, pero no se como puedo hacerlo. Por lo que he tratado, me he dado cuenta de que no vasta con invocarlos con Show o ShowModal.

Código Delphi [-]
Form3.Show();
Ni tampoco funciona con:
Código Delphi [-]
Form3.ShowModal();

Entonces la pregunta es, cómo puedo invocarlos ???.

Espero me hayan entendido, y agradezco de antemano su ayuda.
Responder Con Cita
  #2  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
El Form padre debe tener la propiedad ForStyle es fsMDIForm y los hijos en fsMDIChild...

Para mostrar el formulario hijo solo basta con crearlo, asi por ejemplo:

Código Delphi [-]
FormularioHijo := TFormularioHijo.Create(Application);

Pero si en el Form padre tienes algun TPanel, ese TPanel debera estar invisible para que el hijo pueda ser mostrado.

Y listo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 05-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Question Crear un form fsMDIForm y varios forms hijos

Hola jhonny, de antemano, gracias por tu atención.

Ya he intentado invocar el form hijo de la forma en que me has indicado:

Código Delphi [-]
procedure TForm2.Productos1Click(Sender: TObject);
begin
Form3 := TForm3.Create(Application);
end;
end.

Pero me arroja un error que dice "Cannot create form No. MDI forms are currently active"

Cabe mencionar que en el form padre tengo un TMainMenu que es desde donde estoy tratando de invocar los forms hijos.

Podrías ayudarme ?

Última edición por citlalliDgp fecha: 05-12-2007 a las 23:38:14.
Responder Con Cita
  #4  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Verifica que el hijo tenga el FormStyle en fsMDIChild y que el padre sea fsMDIForm.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, ahora que haz colocado el error cambia la cosa un poco...

Verifica tambien que el Form "Padre" tambien sea el Form principal de tu aplicación.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #6  
Antiguo 05-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Exclamation Crear un form fsMDIForm y varios forms hijos

Muy bien, ya he logrado lo que quería. Y eso gracias a tu ayuda.

Ahora, surgen dos dudas. Puesto en este tipo de forms MDI no puedo utilizar el ShowModal, necesito saber como puedo hacer para que mientras un form hijo este ejecutandose, el form padre quede inhabilitado.

La otra duda es, por qué no puedo cerrar los forms hijos ???
Responder Con Cita
  #7  
Antiguo 06-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por citlalliDgp Ver Mensaje
Muy bien, ya he logrado lo que quería. Y eso gracias a tu ayuda.

Ahora, surgen dos dudas. Puesto en este tipo de forms MDI no puedo utilizar el ShowModal, necesito saber como puedo hacer para que mientras un form hijo este ejecutandose, el form padre quede inhabilitado.

La otra duda es, por qué no puedo cerrar los forms hijos ???
Bueno, son dos preguntas y te las voy a enumerar en las dos respuestas respectivamente:

1) Si puedes usar el ShowModal, pero para eso el formulario modal tendra que tener su propiedad FormStyle como fsNormal.

2) Si no defines una acción al cerrar un MDIChild este tomara por defecto el valor caMinimize, para cambiar este valor por el que mas te conviene basta con que en el OnClose del formulario de tipo Child hagas algo como lo siguiente:

Código Delphi [-]
Action := caFree;

Los posibles valores de Action y lo que estos hacen, los encontraras en la ayuda en el topico TCustomForm.OnClose y son los siguientes...


Cita:
caNone The form is not allowed to close, so nothing happens.
caHide The form is not closed, but just hidden. Your application can still access a hidden form.
caFree The form is closed and all allocated memory for the form is freed.
caMinimize The form is minimized, rather than closed. This is the default action for MDI child forms.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 06-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Crear un form fsMDIForm y varios forms hijos

Hola otra vez. Tengo otro problema. Cuando Inicio mi aplicación se abre el form padre (que es tambien el form principal) pero me aparecen todos los forms hijos abiertos a la vez, y yo no necesito que esten todos abiertos. Que puedo hacer para que los forms hijos aparezcan solo cuando yo los invoque.
Responder Con Cita
  #9  
Antiguo 06-12-2007
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 citlalliDgp, debes quitar tus forms hijos del autocreate (Project->Options), asi solo los creas cuando los necesites.

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 06-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por citlalliDgp Ver Mensaje
Hola otra vez. Tengo otro problema. Cuando Inicio mi aplicación se abre el form padre (que es tambien el form principal) pero me aparecen todos los forms hijos abiertos a la vez, y yo no necesito que esten todos abiertos. Que puedo hacer para que los forms hijos aparezcan solo cuando yo los invoque.
Te vas a Project|Options|Forms y sacas del Auto-create forms los forms que nos haz mencionado excepto el principal, colocandolos en la sección de Available forms.

Nota: Si tienes una nueva pregunta, lo mejor es que abras un nuevo hilo con su respectivo titulo, para que las futuras personas que tengan la misma inquietud encuentren mas facil la solución .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #11  
Antiguo 06-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Gracias por su atencion, jhonny y caro. Seguiré tu consejo jhonny pues tengo mas dudas.
Responder Con Cita
  #12  
Antiguo 07-12-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
Hola, quería comentarte de un artículo en la wiki que trata sobre las aplicaciones MDI. Se trata de éste:

http://wiki.clubdelphi.com/wiki/inde...MDI_CPPBuilder

En él, encontrarás todas las respuestas a las preguntas que ya has hecho y algo más.

El código está en C++Builder, pero los conceptos son los mismos y verás que las propiedades y métodos de los que ya te han hablado johnny y Caro son los mismos.

Espero que a alguien más le sea útil el artículo.
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
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
Mejorar Maximizado de los forms MDI Hijos enecumene OOP 9 25-10-2007 15:07:52
Forms Hijos djj OOP 9 31-10-2004 02:16:27
como puedo poner form hijos ronimaxh Varios 5 22-10-2003 22:55:23
Más sobre forms Hijos y Nietos apicito OOP 2 24-07-2003 08:33:57
Listar Forms Hijos cso2000 Varios 2 20-05-2003 21:11:13


La franja horaria es GMT +2. Ahora son las 23:57:22.


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