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 13-12-2004
neon neon is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
neon Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 13-12-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 13-12-2004
neon neon is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
neon Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 13-12-2004
neon neon is offline
Miembro
 
Registrado: jul 2004
Posts: 62
Poder: 20
neon Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 15-12-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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.

Código Delphi [-]

var Form2:Tform2;

...
 function editar(FormPadre: TForm) :integer;
begin

Form2 := TForm2.Create(FormPadre);
try
  Form2.FormStyle := fsMDIChild;
  Result := 0;
except
on e: exception do
begin
  ShowMessage('Error: ' + e.Message); 
  FreeandNil(form2);
end;
end;

Si esto no soluciona tu problema, igual será la forma de cargar la Dll

saludos y espero que te ayude
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


La franja horaria es GMT +2. Ahora son las 22:17:30.


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