si se llama a Form.Release después de usar el formulario, liberará toda la memoria relacionada, pero no establecerá la variable de forma en nil.Form.Release + NIL
if not assigned (Form1) then
begin
Application.CreateForm(Tform1, Form1);
try
// Do something
finally
Form1.Release
end;
end;
Para poder volver a llamar al mismo código, Form1 debería establecerse en cero en algún momento. A partir de la descripción de lanzamiento no puedo hacer
Form1 := nil;
justo después de lanzamiento, ya que el procedimiento de liberación volverá directamente después de ser llamado y antes de que el formulario es realmente liberado. No puedo detectar cuándo finaliza Form.Release para establecer la forma var a nil.
¿Cuál es la mejor manera de hacerlo?
Holger
Excepto que no se aplica a las formas en las que no se utiliza de forma gratuita, pero la versión ... –
Roddy, estoy utilizando Delphi Win32 (lo siento por no mencionar). Por lo que yo entiendo, para un formulario, Release hace muchas más tareas que solo un FreeAndNil simple, que no liberaría los componentes que pertenecen al formulario. ¿Es esto correcto? – Holgerwa
Sí, Release hace más, pero solo para diferir la llamada de Free. No necesita llamar a Devolución gratuita, por lo que no necesita llamar a Liberación y puede llamar gratis. Consulte también http://stackoverflow.com/questions/274523/formrelease-nil#274734 –