Ver Mensaje Individual
  #9  
Antiguo 23-02-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Reputación: 21
DarKraZY Va por buen camino
Mi gozo en un pozo (expresión utilizada después de una alegría, llega una decepción)

Todo el código anterior sigue fallando. Cuando se elimina una Column del Collection salta error de memoria.

Investigando más a fondo la VCL parece ser que TDBGridColumns tiene como Owner al DBGrid (como debe de ser). Y buscando en la unit Classes he encontrado la solución ¡TOwnedCollection!. Que es un descendiente de TCollection pero con Owner explícito en el Create.


Manos a la obra y funcionando (por ahora jeje)
Código Delphi [-]
  TOwnedDBGridColumns = class(TDBGridColumns)
  private
    FOwner: TPersistent;
  protected
    function GetOwner: TPersistent; override;
  public
    constructor Create(AOwner: TPersistent; Grid: TCustomDBGrid;
      ColumnClass: TColumnClass);
  end;

constructor TOwnedDBGridColumns.Create(AOwner: TPersistent;
  Grid: TCustomDBGrid; ColumnClass: TColumnClass);
begin
  inherited Create(Grid, ColumnClass);
  FOwner := AOwner;
end;

function TOwnedDBGridColumns.GetOwner: TPersistent;
begin
  Result := FOwner;
end;
Responder Con Cita