¿¿Se puede Hacer??
Buenas:
Tengo dos formularios uno Padre (fsMDIForm) y un formulario Hijo (fsMDIChild) al que llamo de la manera: TFormHijo *FHijo = new TFormHijo(this); //Muestro Form FHijo->Show(); En el formulario Hijo realizo una serie de operaciones segun el resultado de las cuales al salir Close() debo ejecutar alguna funcion en el Formulario Padre... Ya que el programa a diferencia de una llamada de tipo Modal TFormHijo *FHijo; Fhijo = new TFormHijo(this); //Muestro Form Modal switch (FHijo->ShowModal()) { case mrOk:LLamarFuncion() break; case mrCancel:break; } Una vez cerrado el formulario secundario no continua la ejecucion del programa en la linea siguiente a la llamada Mi pregunta es la siguiente puedo acceder a una funcion del Formulario Padre desde el Formulario Hijo . Gracias. |
Si, puedes obtener un puntero al formulario padre MDI. Para ello el hijo debe tener incluida la definicion.h del padre.
La forma de obtener ese puntero a la clase Padre desde la clase Hijo es: Código:
ClasePadre* MDI = static_cast <ClasePadre*> (Owner); Saludos.;) |
también puedes application.MainForm en el formulario hijo.
Supongo que el MainForm será tu MDIForm Saludos |
Muchas Gracias por contestarme
|
El problema de usar MainForm "a secas" es que es un TForm y no el MDI que buscamos, por eso temenos que hacer un "casting" como el que describo...
Saludos. |
Perdón, no me había dado cuenta de un detalle importante. Una ventana mdiChild no puede mostrarse con ShowModal. Obtendrás un error en pantalla más o menos como "Can not make modal a visible window" o algo así.
Si quieres mostrar una ventana como modal, tienes que poner FormStyle a algo distinto a mdiChild (y obviamente distinto de FormMDI, ya que sólo puede haber una en la aplicación). Si necesitas que una ventana se comporte como mdichild y a la vez mostrarla con ShowModal, aunque se puede hacer, es lioso, yo te aconsejaría usar un frame con todo lo que debe llevar dentro y ese frame, lo pones en 2 ventanas nuevas, una para usarla como mdichild y otra como modal. Saludos |
Tienes razón, Lepe, con tu comentario de MDIChild y ShowModal. Pero creo que la intención de NEG1414 es no mostrarlo como Modal, al menos así lo entiendo de su comentario:
Cita:
Saludos. |
Creo que tienes razón una vez más escafandra, creo leí demasiado rápido ;).
Saludos |
La franja horaria es GMT +2. Ahora son las 13:09:23. |
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