FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Ayuda formularios MDI - DLL
Hola,
Tengo que hacer una pequeña aplicacion de prueba con formularios MDI y DLL. Lo que debo hacer es llamar a una Dll que será un formulario MDIChild, llamado desde un formulario MDI. Bien lo que hago es declarar el formulario de la DLL como formulario MDIChild y el formulario desde el cuál llamo la Dll es formulario MDI. El problema que tengo es que al crear el formulario me da un error de "Cannot create form. No MDI forms not currently active" ¿Como que los formularios MDI no están activos, que debo hacer para solucionar este problema? ¿Sabeis alguna dirección o documento que trate los formularios MDI? Saludos. |
#2
|
||||
|
||||
Revisa el código viendo el orden de creación de las ventanas.
Por ejemplo: primero creas un Datamodule, despues la ventana MDI Si dentro del datamodule llamas a crear ventanaChild te dará error. En el Oncreate del MDI creas las ventanas hijas?? Pásalo al evento OnShow del MDI Saludos |
#3
|
|||
|
|||
Declaro como FormMDI el formulario1.
Una vez que pulso un boton de este formulario1 (por ejemplo) llamo a una función principal de la DLL, la cuál crea el formulario2 que es el MDIChild. Pero al realizar el create de este formulario2 (MDIChild) me sale el mensaje de error. Este es el código de la función de la DLL: function editar(FormPadre: TForm) :integer; var Form2 : TForm2; begin Application.Handle := FormPadre.Handle; try Form2 := TForm2.Create(FormPadre); Form2.FormStyle := fsMDIChild; Form2.Show; Result := 0; except on e: exception do begin ShowMessage('Error: ' + e.Message); Form2.Free; end; end; end; Alguna sugerencia? |
#4
|
|||
|
|||
No se si el problema es una limitación de delphi.
Se puede tener un formulario padre (MDI) en una aplicacion, llamado form1 p.e., y llamar a una DLL que cree un formulario que se encuentra en dicha DLL, y que este formulario sea hijo (ChildMDI) del form1? Porque no se si esto se puede hacer. |
#5
|
||||
|
||||
He visto algunos detalles que paso a comentarte.
el Handle del forrm padre no debes asignarlo al Handle de Application, son cosas distintas. Form2 está declarada dentro de la función, eso significa que al salir, pierdes la referencia a esa ventana. Form2 debe estar declarada en un sitio Global. Tampoco hace falta hacer el Show de la ventana, ya que al crearse una de ellas, en un entorno MDI, siempre se muestran por defecto.
Si esto no soluciona tu problema, igual será la forma de cargar la Dll saludos y espero que te ayude |
|
|
|