Mi gozo en un pozo
![Frown](http://www.clubdelphi.com/foros/images/smilies/frown.gif)
(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;