Cita:
Empezado por granodetoro
y donde pongo el codigo me olvide preguntar
|
El código va en el MDIForm, que por supuesto debe incluir las unidades que definen las ventanas MDIChilds.
Otra opcion es que sea el propio MDIChild quién verifique su existencia, para eso debes usar
métodos de clase.
Código Delphi
[-]
unit Unit2;
....
type
TMDIChild = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
public
class procedure MostrarChild;
end;
var
MDIChild: TMDIChild;
implementation
class procedure TMDIChild.MostrarChild;
begin
if not Assigned(MDIChild) then
MDIChild:= TMDIChild.Create(nil);
MDIChild.Show;
end;
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
procedure TMDIChild.FormDestroy(Sender: TObject);
begin
MDIChild:= nil; end;
end.
Y llamarlo desde el MDIForm de este modo:
Código Delphi
[-]
uses Unit2;
....
begin
TMDIChild.MostrarChild;
end;
En todos los casos tenés que quitar las ventanas hijas de auto-create forms.
Y otra, a mi gusto la mejor, es usar un patrón
Singleton. Si buscas con ese término, hay mucho redactado al respecto .
Un saludo.