Ver Mensaje Individual
  #6  
Antiguo 19-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Sólo aportar un detalle que me parece importante:
Código Delphi [-]
procedure TForm1.button1click(Sender:TObject);
begin
  Form2 := TForm2.Create(Self),
  Form2.Show;
end;

1 - Si cierras el Form1, se cierra automáticamente el Form2.
2 - Si Form2 ya estaba creado previamente, estás teniendo fugas de memoria, (lo que llamamos memory leak) ya que estás creando un TForm2 nuevo, pero asignándolo a la variable global "Form2"

Al ser ventanas MDICHILD se complica aún más porque, como dices, puede crearse la ventana Form2 desde varios sitios.

Hay soluciones elegantes y otras no tanto, no sé cual quieres utilizar:
- la "elegante": usar herencia visual creando una ventana base y métodos genéricos que pueden llamarse desde cualquier ventana del mismo tipo.
- La simple: comprobar que "Form2 = nil" antes de crear la ventana y al tiempo de cerrarla, poner esa variable a nil (en el Form2.Close).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita