Cita:
Empezado por escafandra
Yo me preguntaría si Sender es un formulario y el formulario que quieres cerrar...
Si quieres cerrar TKyndo, ¿No es mas fácil escribir directamente close?, en caso contrario ¿Quién es Sender?
Falta saber también si tienes escrito el evento OnClose y que hace.
Saludos.
|
Hola escafandra, gracias por tu respuesta tan rápida
me disculpo si mi explicación no es lo suficientemente clara...
pues la clase
TKyndo es solo un clase con la que manejo mi aplicación, me explico
cuando quiero crear una ventana o Form nuevo, desde
TKyndo.CrearVentana(); lo hago,
dado que allí manipulo el color, posición etc.. y asigno eventos a todas las ventanas que se creen en la aplicación,
desde
TKyndo no cierro ninguna ventana, simplemente creo otro procedimiento
TKyndo.FormKeyDown();
(dentro de mi clase kyndo) y lo asigno a cada ventana que se crea, este ultimo procedimiento son los eventos del teclado que todos mis Forms van a tener, como por ejemplo cerrar la ventana con la tecla Escape etc..., por lo tanto el
Sender del que se habla es del formulario en cuestión, el que quiero cerrar.
ya en dicho formulario tengo este evento OnClose
Código Delphi
[-]
procedure TFrmOpciones.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Archivoini('Aplicacion', 'Transparencias', ChkTransparentes.Checked);
if assigned(FrmOpciones) then
FreeAndNil(FrmOpciones); end;
tengo una inquietud, ¿es correcto hacer FrmOpciones:=nil? ¿Qué pasa con la memoria que tenia ocupada?
es por eso que pongo
FreeAndNil, porque pienso que así la libera y lo que quiero es que la próxima vez que mi clase TKyndo vaya a crear la misma ventana, la variable FrmOpciones este vacía, pero no creo que FrmOpciones:=nil sea la manera de cerrar un Form. (pienso, ojala me equivoque )
por último, escribir directamente Close, dentro del evento OnClose, seria un ciclo infinito.
Muchas gracias a quien me pueda colaborar
Saludos desde Colombia