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
  #21  
Antiguo 16-01-2004
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:
Empezado por Descendents
Y creo que la penultima pregunta que hice lo de la linea milagrosa, es que no se le debe asignar el parent en el momento de la destrucción
Así es!

Cita:
Empezado por Descendents
como existen estos mensajes de windows
Justo los mensajes que has nombrado no son propios de Windows, utilizan el sistema de mensajes de Windows, pero son mensajes propios de la VCL.

Bueno... vemos como te has contestado solo, eso significa que primero es conveniente investigar un poco y luego preguntar, aclaro que no te estoy recriminando nada, bien sabes que siempre te he contestado de buena gana , solo para que lo tengas en cuenta!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #22  
Antiguo 16-01-2004
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
Estoy totalmente de acuerdo contigo y creo que haces muy bien en decirlo, pero a veces la desesperación en algo, hace cometer estos errores.

Muchas gracias.
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón).
Responder Con Cita
  #23  
Antiguo 16-01-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Hola a todos,

Pues yo no entiendo por qué la "linea milagrosa" soluciona el problema. Traduciendo a pseudocódigo el de Delphi.com.ar ...

Código:
procedure Tedit2.MeAsignanElParent(AParent: TWinControl);
begin
  inherited;
  if not (me están destruyendo) then
    FBoton.Parent := AParent;
end;
Es decir, si me están destruyendo, no asignes mi parent al del botón. ¿Qué tenemos que deducir de eso? que cuando TForm destruye a los Componets les cambia la propiedad Parent (y por eso se dispara el método)?

Otra cosa que no entiendo es ¿por qué el form ha destruído al Button? El Button forma parte del array Controls no de Components, ¿TForm tambien se encarga de destruir a Controls?

Finalmente en lugar de conprobar que no se esté destruyendo el componente, no os parece más elegante comprobar que el boton esté "assigned"??
__________________
E pur si muove
Responder Con Cita
  #24  
Antiguo 16-01-2004
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:
Empezado por marto
Es decir, si me están destruyendo, no asignes mi parent al del botón.
Esa es la idea!


Cita:
Empezado por marto
¿Qué tenemos que deducir de eso? que cuando TForm destruye a los Componets les cambia la propiedad Parent (y por eso se dispara el método)?.
En el TControl.Destroy se asigna el Parent a Nil, esto produce que se dispare este método cuando se está destruyendo el componente, despues de hacer el FButton.Free según el código original.


Cita:
Empezado por marto
Otra cosa que no entiendo es ¿por qué el form ha destruído al Button?
En el destructor de los TWinControl se destruyen todos los componentes hijos, relacionados por el parent (Controls)


Cita:
Empezado por marto
Finalmente en lugar de conprobar que no se esté destruyendo el componente, no os parece más elegante comprobar que el boton esté "assigned"??
Bueno.. el código original completo lo había hecho con assigned, pero el problema es que el owner destruye antes a componente, y no lo deja apuntado a Nil (0)... entoces assigned siempre da True, aunque el botón ya no exista.


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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 10:04:45.


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