Cita:
Empezado por oscarac
estuve leyendo mastering delphi
y en un ejemplo dice que para destruir un formulario
basta con colocar en el evento Close
action := caFree
frmBalance := nil
|
De la ayuda de Delphi, sobre el metodo Free
Cita:
|
Warning: Never explicitly free a component within one of its own event handlers or the event handler of a component it owns or contains. For example, do not free a button or the form that owns the button in its OnClick event handler.
|
O sea, que si pones frmBalance.Free (que
no es lo mismo que action:=caFree) o si llamas a FreeAndNil(frmBalance) dentro del OnClose de frmBalance o dentro del OnDestroy (que no tendria sentido) te va a dar error.
Lo que haces vos esta bien, porque vos abris las ventanas con
Show, entonces las liberas cuando se cierran en el OnClose (con action:=caFree)
Lo que NO podes hacer es cambiar la instruccion action:=caFree; por frmBalance.Free; porque ahi si te va a dar error.
Cuando se usa ShowModal para mostrar las ventanas, la siguiente linea al ShowModal no se ejecuta hasta que se cierra la ventana, entonces se hace la liberacion en la linea siguiente:
Código Delphi
[-]
frmBalance:=TfrmBalance.Create(Self);
frmBalance.ShowModal;
frmBalance.Free;
frmBalance:=nil;
por ultimo, de la ayuda de Delphi sobre el metodo Free...
Cita:
|
To free a form, call its Release method, which destroys the form and releases the memory allocated for it after all its event handlers and those of the components it contains are through executing.
|
... aunque yo siempre use Free; jeje
Saludos