Ver Mensaje Individual
  #25  
Antiguo 06-04-2011
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Reputación: 21
javier7ar Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
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; 
// ó FreeAndNil(frmBalance) para hacerlo en una sola linea


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
Responder Con Cita