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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-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
Sobrecargando destructor

Hola a todos,

Estoy creando un componente muy sencillo que hereda de TComboBox. El tema es que necesito que los punteros Objects de su propiedad items apunten a ciertos objetos de una clase. Para lo que hayan leido el hilo sobre "propiedades de clases" , se trata de cargarlo con las listas que allí describo. Bien, en caso de que así se indique, el componente se ha de encargar de liberar estos objetos. Esto lo intento con el siguiente código:
Código:
procedure Destroy; override;
....
destructor TNxAuxCombo.Destroy;
var
  i: Integer;
begin
  if FOwnObjects then
    for i := 0 to Count - 1 do
      if Items.Objects[i] <> Nil then
         Items.Objects[i].Free;
  inherited;
end;
Tengo dos problemas. En primer lugar, al ejecutarse el destructor, Items vale nil, de manera que se produce una excepción. No entiendo cómo puede pasar eso, ya que Items, si no recuerdo mal (no tego aqui el Delphi) se detruye en el destructor de TListControl.
En segundo lugar, si creo el combo en diseño, al destruirse el form me lanza una excepción de "Control xxxx has no parent window". Si depuro el código, efectivamente en mi destructor Parent = nil. Eso me parece muy bien, pero ¿Por que está accediendo al parent?
A ver si tenéis alguna idea y me echáis una mano.

Ah! os pongo el código del constructor por si os da más pistas:
Código:
constructor Create(AOwner: TComponent); override;
....
constructor TNxAuxCombo.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FOwnObjects := true;
  Style := csDropDownList;

end;
__________________
E pur si muove
Responder Con Cita
 



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 18:02:59.


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