Aquí tienes código que utilizo para poner un DbCheckbox que inicialmente estará como no visible y conectado al campo de la tabla que pretendenmos modificar, sobra algo de código pero te lo pego tal cual. A la rejilla para mayor claridad le ha renombrado Reja.
Código Delphi
[-]
procedure TfrConAlbaran.RejaColEnter(Sender: TObject);
begin
if Estado = 2 then
begin
if Reja.Columns [Reja.SelectedIndex].
Field = DmHH.AlbCobrado then
DbchkCobrado.Visible := True
else
DbchkCobrado.Visible := False;
end;
end;
procedure TfrConAlbaran.RejaDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if DmHH.Albcobrado.Value = false then
begin
Reja.Canvas.Brush.Color :=clAqua;
Reja.Canvas.Font.Color:=clRed;
Reja.DefaultDrawColumnCell(Rect,Datacol,Column,State);
end;
if Estado = 2 then
begin
if (gdFocused in State) and
(Column.Field = DmHH.AlbCobrado) then
begin
DbchkCobrado.SetBounds (
Rect.Left + Reja.Left + 1,
Rect.Top + Reja.Top + 1,
Rect.Right - Rect.Left,
Rect.Bottom - Rect.Top);
end;
end;
end;
procedure TfrConAlbaran.RejaKeyPress(Sender: TObject; var Key: Char);
begin
if Estado = 2 then
begin
if DbchkCobrado.Visible and (Ord (Key) > 31) then
begin
Key := #0;
DmHH.Alb.Edit;
DbchkCobrado.Checked := not
DbchkCobrado.Checked;
DbchkCobrado.Field.AsBoolean :=
DbchkCobrado.Checked;
end;
end;
end;
Una aclaración la variable
estado la utilizo para saber si la fuente de datos está en modo edición o consulta antes de abrir la rejilla y segun que en el menú de la aplicación se elija consultas o modificar Estado es igual a 3 ó 2, puesto que el uno lo utilizo para las altas.
Un Saludo