Hola compañeros creo que lo he resuelto, estudiando El código del DbgridCheck y El de Smdbgrid, he llegado a este código, no lo doy por cerrado, por si encontráis algo que este mal o a depurar. Quedo a la Espera de los Comentarios
Código: [Seleccionar]
Código Delphi
[-]unit DBGridPrueba1;
interface
uses
SysUtils, Classes, Controls, Grids, DBGrids, Graphics;
type
TMiColumn = class(TCoLumn)
private
FSomeValue : String;
FValueLow: Integer;
FCcolorValueLow: Tcolor;
FChekValueLow: Boolean;
procedure SetSomeValue(Value: string);
procedure SetColorValueLow(Value: Tcolor);
procedure SetValueLow(Value:Integer);
procedure SetCheckValueLow(Value:Boolean);
protected
public
constructor Create(Collection:TCollection); override;
destructor Destroy; override;
published
property SomeValue : String read FSomeValue write SetSomeValue;
property ValueLow : Integer read FValueLow write SetValueLow default 0;
property ColorValueLow: Tcolor read FCcolorValueLow write SetColorValueLow default clYellow;
property CheckValueLow: Boolean read FChekValueLow write SetCheckValueLow default False;
end;
TMiGridColumns = class(TDBGridColumns)
private
function GetColumn(Index: Integer): TMiColumn;
procedure SetColumn(Index: Integer; Value: TMiColumn);
protected
public
function Add: TMiColumn;
property Items[Index: Integer]: TMiColumn read GetColumn write SetColumn; default;
end;
type
TDBGridPruebas = class(TDBGrid)
private
function GetColumns: TMiGridColumns;
procedure SetColumns(Value: TMiGridColumns);
protected
function CreateColumns: TDBGridColumns; override;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy;
property Columns: TMiGridColumns read GetColumns write SetColumns;
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('PRUEBAS', [TDBGridPruebas]);
end;
constructor TMiColumn.Create(Collection: TCollection);
begin
inherited Create(Collection);
FSomeValue:='';
FValueLow:=0;
FCcolorValueLow:=clYellow;
FChekValueLow:=False;
end;
Destructor TMiColumn.Destroy;
begin
inherited
end;
procedure TMiColumn.SetSomeValue(Value: string);
begin
if FSomeValue<>Value then FSomeValue:=Value;
end;
procedure TMiColumn.SetColorValueLow(Value: Tcolor);
begin
if FCcolorValueLow<>Value then FCcolorValueLow:=Value;
end;
procedure TMiColumn.SetValueLow(Value: Integer);
begin
if FValueLow<>Value then FValueLow:=Value;
end;
procedure TMiColumn.SetCheckValueLow(Value: Boolean);
begin
if FChekValueLow<>Value then FChekValueLow:=Value;
end;
function TMiGridColumns.Add: TMiColumn;
begin
Result := TMiColumn(inherited Add);
end;
function TMiGridColumns.GetColumn(Index: Integer): TMiColumn;
begin
Result := TMiColumn(inherited Items[Index]);
end;
procedure TMiGridColumns.SetColumn(Index: Integer; Value: TMiColumn);
begin
Items[Index].Assign(Value);
end;
constructor TDBGridPruebas.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
end;
destructor TDBGridPruebas.Destroy;
begin
inherited Destroy;
end;
function TDBGridPruebas.GetColumns: TMiGridColumns;
begin
Result := TMiGridColumns(inherited Columns)
end;
procedure TDBGridPruebas.SetColumns(Value: TMiGridColumns);
begin
TMiGridColumns(Columns).Assign(Value)
end;
function TDBGridPruebas.CreateColumns: TDBGridColumns;
begin
Result := TDBGridColumns.Create(Self, TMiColumn);
end;
end.