Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2003
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
Liberar componente.

Hola a todos. Tengo un componente para realizar búsquedas sobre una tabla, que es visual. Lo arrastro a un Form, y ejecuto la aplicación. Abro ese form, ejecuto la búsqueda y si cierro el form, la pantalla de búsqueda que se crea se mantiene abierta todavía. Pensaba que al arrastrar el componente, el owner pasaba a ser el form al que lo arrastro, ¿es esto asi? Se que el owner se especifica en el Create, pero al ser visual, lo crea el form. Creo que hay algo que se me escapa...

Muchas gracias de antemano.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #2  
Antiguo 19-11-2003
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
mira si el componente tiene un free oa algo.

Si lo tiene en el onclose del form pon
componente.free;

Última edición por Descendents fecha: 19-11-2003 a las 13:01:49.
Responder Con Cita
  #3  
Antiguo 19-11-2003
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
Cita:
Descendents comentó:
mira si el componente tiene un free oa algo.

Si lo tiene en el onexit del form pon
componente.free;
El componente es mio. Si, podría crear un evento que cerrara el form y lo liberara, pero pensaba que al arrastrarlo al form era este el encargado de cerrarlo y liberarlo. ¿es realmente así? Me gustaría encontrar otra solución más rápida que liberarlo explicitamente, porque en un form tengo una media de 20 de estos componentes.

Venga, un saludo.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #4  
Antiguo 19-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Tendrías que sobreescribir el destructor del archivo, y desde ahí si la pantalla esta abierta, cerrarla y liberarla.
Código:
  TMiComponente = class(TComponent)
  private
    FDialog: TFrmDialog;
  public
    destructor Destroy; override;
  end;

...

implementation

destructor TMiComponente.Destroy;
begin
  if Assigned(FDialog) Then
    FDialog.Free;

  inherited;
end;
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 19-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
setry2 comentó:
..Abro ese form, ejecuto la búsqueda y si cierro el form, la pantalla de búsqueda que se crea se mantiene abierta todavía...
Cuando cierras el form... ¿Lo liberas?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 19-11-2003
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
Cita:
delphi.com.ar comentó:
Cuando cierras el form... ¿Lo liberas?
En el close del form pongo el action a caFree y libero las qry's que puedan quedar abiertas hasta ese momento. Tengo que cerrar explicitamente desde el form la pantalla generada por el componente, verdad? en el close del form.

Muchas gracias.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #7  
Antiguo 19-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Has leído mi mensaje anterior?...
Tu componente tiene como owner el form que lo contiene, cuando este form se libere va a liberar tu componente, en mi mensaje anterior puedes ver como aprovecho de la "notificación" de liberación para liberar el formulario de búsqueda. De todos modos si el Owner del formulario de búsqueda es el componente, este se encargará de liberar el formulario cuando se libere este componente, por lo tanto se cerrará.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 19-11-2003 a las 15:40:36.
Responder Con Cita
  #8  
Antiguo 19-11-2003
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
Cita:
delphi.com.ar comentó:
De todos modos si el Owner del formulario de búsqueda es el componente, este se encargará de liberar el formulario cuando se libere este componente, por lo tanto se cerrará.
Ese era el problema, que el Owner del formulario era application en vez de self. Vaya, que fallo más tonto.

Bueno, muchísimas gracias por tu ayuda.

Un saludo.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:12:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi