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 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Problemas con Form MDIChild

Señores, tengo um form principal que es fsNormal y este llama un form(frmOrcamento) que es MDIForm. Este form llama otro form(frmCriaOrcamento) que es MDIChild. El problema es que quando yo llamo el Form MDIChild, el no starta, o sea, yo llamo el form, pero el no aparece en la pantalla o dentro del form MDI. El form MDI, el tieno solo un menu Ribbon de DevExpress, solo esto y nada mas. Este form Child, el viene de una herencia, pero su herencia no tiene ninguno codigo, solo un menu Ribbon y nada mas.
Responder Con Cita
  #2  
Antiguo 01-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Paulao.

Delphi dispone dos interfaces para el usuario: SDI y MDI.

Esta última (Multiple Document Interface) consiste en una ventana principal (madre) que gestiona dentro de su espacio a multiples ventanas dependientes de ella (hijas). Esto es intrínseco al funcionamiento de MDI.


Por lo que, si no me equivoco, lo que queres hacer, crear una ventana principal (fsNormal) que llame a un MDIForm, no va a funcionar.

En una aplicación MDI la ventana principal siempre debe ser un MDIForm.


Saludos.

Última edición por ecfisa fecha: 01-09-2010 a las 16:47:50.
Responder Con Cita
  #3  
Antiguo 01-09-2010
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 Paulao, en una aplicación MDI el MainForm siempre tiene que ser el MDIForm por lo que no va a funcionar de la forma que planteas, lo que se me ocurre es que tu form principal sea el MDIForm el cual lo escondes al inicio de tu aplicación (esto tendrías que hacerlo despues de crear el form principal en el DPR) y muestras el form normal (para ello la propiedad Visible del form en True).

Código Delphi [-]
 
  .............................................
  Application.CreateForm(TFormMain, FormMain);
 
  Application.ShowMainForm := False;
  Application.Run;

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
  #4  
Antiguo 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Creo que usteds no me entendieron. Mi Form es un MDIForm y el otro form es un MDIChild. El que pasa es que el MDIChid no start en mi MDIForm. Yo uso solo um Menu Ribbon de DevExpress.
Responder Con Cita
  #5  
Antiguo 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Dejame explicar mejor. Mi programa tiene um Form principal, que es el inicio de todo. Este form es fsNormal, pero el no llama ninguno MDIChild. hay un boton que llama otro form llamado Orcamento(Este es fsMDIForm). Este form MDIForm, llama 3 otros forms MDIChild. Esses(MDIChild) no están aparecendo dentro del form MDIForm, o sea, no muestra nada quando clico en el boton. Esta es mi llamada para el form MDIChild:
Código Delphi [-]
procedure TfrmOrcamento.btnCriaPedClick(Sender: TObject);
begin
  inherited;
  if frmCriaOrcamento = nil then
    frmCriaOrcamento := TfrmCriaOrcamento.Create(Self);
  frmCriaOrcamento.Show;
end;
Yo jamas ha dicho que quiero llamar un Form MDIChild en un Form Normal. Mi español no es bueno, pero yo no he dicho nada. Abajo es el que he escrivido.
Cita:
Señores, tengo um form principal que es fsNormal y este llama un form(frmOrcamento) que es MDIForm. Este form llama otro form(frmCriaOrcamento) que es MDIChild
Responder Con Cita
  #6  
Antiguo 01-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Paulao Ver Mensaje
Dejame explicar mejor. Mi programa tiene um Form principal, que es el inicio de todo. Este form es fsNormal, pero el no llama ninguno MDIChild. hay un boton que llama otro form llamado Orcamento(Este es fsMDIForm). Este form MDIForm, llama 3 otros forms MDIChild. Esses(MDIChild) no están aparecendo dentro del form MDIForm, o sea, no muestra nada quando clico en el boton. Esta es mi llamada para el form MDIChild:
Código Delphi [-]
procedure TfrmOrcamento.btnCriaPedClick(Sender: TObject);
begin
  inherited;
  if frmCriaOrcamento = nil then
    frmCriaOrcamento := TfrmCriaOrcamento.Create(Self);
  frmCriaOrcamento.Show;
end;
Yo jamas ha dicho que quiero llamar un Form MDIChild en un Form Normal. Mi español no es bueno, pero yo no he dicho nada. Abajo es el que he escrivido.
Hola Paulao.

Tu español es muy bueno, (no quisieras escuchar mi portugés... ).

Entendí perfectamente lo que queres hacer y lo resalte en negrita (bold) en tu texto.

Lo que estás haciendo es llamar a un MDIForm desde un Normal Form.
Y te repito mi respuesta:
Cita:
En una aplicación MDI la ventana principal siempre debe ser un MDIForm.
Si querés ejecutar correctamente una aplicación MDI, no se puede llamar a un MDIForm desde un Normal Form.

Perdón, si en algún momento no me he explicado bíen.



Saludos.

Última edición por ecfisa fecha: 01-09-2010 a las 22:55:17.
Responder Con Cita
  #7  
Antiguo 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Entendi. Puzo mi form principal para MDIForm. Ahora dejame explicarlo mejor. Este form principal, es en la verdad un menu con algunos botones ribbon. El llama otro form, que deberia ser otro MDIForm, y este si, deveria llamar otros 3 forms MDIChild. Esto no estas acontecendo.
Responder Con Cita
  #8  
Antiguo 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Solo una pregunta. Es posible un Form fsMDIForm llamar otro fsMDIForm y este ultimo llamar un fsMDIChild? Es asi que estas en mi codigo, pero no estas funcionando. En realidad, yo puzo un mensaje no corecto, pues el principal estava con fsMDIform y no fsNormal, como havia dicho, pero el siempre fue fsMDIForm. Y no estas funcionando. No da ninguno error, solo el form llamador "pisca", es asi en español y despues nada acontece.
Responder Con Cita
  #9  
Antiguo 01-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Sinceramente desconozco si así se puede... nunca lo he probado Paulao.

Voy a hacer unas pruebas y buscar algo de información y te contesto sobre lo que averigué.

Saludos
Responder Con Cita
  #10  
Antiguo 01-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Cambie mi llamada del form principal, o sea, lo pedi que llamase a un form MDIChild. Que pasa es que no llamo tambien. No se lo que hacer, pues es una cosa mui simples, llamar un Form Child y no consigo hacerlo, o sea, no estas funcionando aca comigo. Ademas de crear el form tengo que hacer algo diferente, en DPR o otra cosa? hay alguna configuracion? Uso Delphi 7, MySql y DevExpress.
Responder Con Cita
  #11  
Antiguo 01-09-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Paulao Ver Mensaje
Solo una pregunta. Es posible un Form fsMDIForm llamar otro fsMDIForm
No. Sólo se puede usar un MDIFORM por aplicación.

Quizás puedas usar componentes de torry.net o JVCL que tenga aspecto de MDIFORM, pero internamente sea otra cosa y que sí permitan lo que quieres. No recuerdo ninguno ahora mismo.

EDIT: Puedes hacer dos ejecutables distintos y llamarlos con ShellExecute

EDIT: Revisa en la carpeta "demos" como se trabaja con "mdiapp"
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #12  
Antiguo 01-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Paulao, hice la prueba de esta forma:

. Form1 ( fsMDIForm) llama a:
...Form2 ( fsMDIForm) llama a:
....Form3 ( fsMDIChild) y
....Form4 ( fsMDIChild)


No dá error de ningún tipo, pero como lo suponía; Form3 y Form4 se muestran dentro de Form1,
no reconocen a Form2 como Form padre.

Delphi toma al Formulario principal como MDIForm, y si bíen no protesta
por la existencia de otro, no lo considera como un MDIForm.

No pude encontrar referencia sobre dos MDIForms en una aplicación y transferirle el nodo al segundo,
quizá se pueda hacer... pero al menos yo, no sé como.


Saludos.
Responder Con Cita
  #13  
Antiguo 02-09-2010
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 Paulao, no se puede tener dos MDIForms, revisa el ejemplo que hizo Federico en este hilo, que es parecido a lo que tu quieres.

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
  #14  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Miras, no se que se pasa. Ya hizo de todo, pero no funciona. Este es mi form principal llamando un form fsMDIForm, pero el principal tambien es un MDIForm:
Código Delphi [-]
procedure TfrmPrincipal.btnOrcamentosClick(Sender: TObject);
begin
  frmOrcamento := TfrmOrcamento.Create(Self);
  frmOrcamento.Show;
end;
Ahora, este MDIForm llamando un MDIChild:
Código Delphi [-]
procedure TfrmOrcamento.btnCriaPedClick(Sender: TObject);
begin
  inherited;
  if frmCriaOrcamento = nil then
    frmCriaOrcamento := TfrmCriaOrcamento.Create(Self);
  frmCriaOrcamento.Show;
end;
Que pasa es que no funciona. No me lo da error, pero no funciona. Que pasa es quando yo llamo el Child, lo aparece en la pantalla es el form Principal. Y necesito que sea MDI, pues en esta pantalla el usuario ira abri varios forms hacia dentro de un mismo form, entonces deve ser un MDI y no SDI.
Responder Con Cita
  #15  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Otra cosa ahora esta acontecendo. Hizo con que el Form Principal fuera um fsNormal, pues el no me interesa que sea MDI. Este principal llama otro form que es fsMDIForm, este form se llama frmOrcamento. Este form frmOrcamento, el va a llamar otro form fsMDIChild, llamado frmCriaOrcamento. Qua pasa ahora es que al llamar este form Child viene este mensaje:
Código Delphi [-]
Project Globa.exe raised a exception class EInvalidOperation with message 'Cannot create form. No MDI forms are currently active'. Process stopped. Use step or run to continue
Responder Con Cita
  #16  
Antiguo 02-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Paulao.

Creo que no tenés claro el concepto sobre como funciona una aplicación MDI e indudablemente,
no hemos podído hacernos entender con nuestas explicaciones.
Así que buscando un poco en la web encontre este ( LINK ), que lo explica con claridad.
Está en español, pero no creo que tengas dificultad de entenderlo.

Espero que te sirva.

Saludos.
Responder Con Cita
  #17  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Hola a todos mas una vez. Yo tengo otros proyectos aca comigo com MDI y funcionan. El que pasa que este yo puzo um Menu Ribbon de DevExpress. No se el que pasa se es o no por cueta deste menu, pero no estas a funcionar. Voy hacer un teste aqui y ver si funcioan o no mi aplicacion MDI.
Responder Con Cita
  #18  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Adjunto a este post está mis fuentes para ver que hizo praticamente todo. Para abrirlo, hay que tener instalados en su Delphi, la suite de componente Dev Express y Delphi 7. No puzo ninguno codigo como puede ver, solo componente y llamada a form y cerrar ventana.
Responder Con Cita
  #19  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Adjunte y parece que no fue. Como hago esto, adjuntar un archivo a mi post?
Responder Con Cita
  #20  
Antiguo 02-09-2010
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
tengo un archivo .zip de 290Kb y este forum me dice que puedo subir 293Kb. Quanto me voy a adjuntar mi archivo, diz que lo excede por 190,1Kb. No entiendo mas nada. No tengo ninguno archivo adjuntado, pues hizo limpiexa en todo, o sea, excluir todo lo que tenia. Necesito subir mis fuentes para que puedan hacer una analise e ver porque mis form MDI no funcionan.
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
Form MDIchild controlados por un TabControl afxe Gráficos 2 11-05-2010 14:54:54
Mantener un MDIChild por encima de un Form Edgtho OOP 0 12-03-2009 22:46:15
Form MDIChild Paulao Varios 2 05-01-2009 20:31:05
Error compilacion al crear form MDIChild drykea Varios 4 23-08-2007 16:46:04
Pososion form MDIChild silviodp OOP 1 25-10-2004 15:21:27


La franja horaria es GMT +2. Ahora son las 10:00:17.


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