Ver Mensaje Individual
  #9  
Antiguo 25-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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 granodetoro Ver Mensaje
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; // necesario, evita repetir la creacion en MostrarChild
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita