Con tu Permiso MarcosZorrilla, pongo lo que yo utilizo,reciclado de tu código.
Al Grid,al campo booleano,se le pone el readonly a true, si no al modificarlo por teclado daria error.
ADOTable1:Tabla
trastero:Campo boleano
Grlineas:Grid
DbChkSumarClick:Tcheckbox;
Código:
procedure TForm1.GrLineasColEnter(Sender: TObject);
begin
if GrLineas.Columns [GrLineas.SelectedIndex].
Field = ADOTable1trastero then
DbChkSumar.Visible := True
else
DbChkSumar.Visible := false;
end;
procedure TForm1.GrLineasDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (gdFocused in State) and
(Column.Field = ADOTable1trastero) then
begin
DbchkSumar.SetBounds (
Rect.Left + grLineas.Left + 1,
Rect.Top + grLineas.Top + 1,
Rect.Right - Rect.Left,
Rect.Bottom - Rect.Top);
dbchksumar.Checked := ADOTable1Trastero.value;
end;
end;
procedure TForm1.DbChkSumarClick(Sender: TObject);
begin
ADOTable1.edit;
ADOTable1Trastero.value := DbChkSumar.Checked;
adotable1.post;
end;
procedure TForm1.GrLineasKeyPress(Sender: TObject; var Key: Char);
begin
if dbchksumar.visible then begin
if dbchksumar.Checked = true then begin
dbchksumar.Checked := false;
dbchksumarclick(nil);
exit;
end;
if dbchksumar.Checked = false then begin
dbchksumar.Checked := true;
dbchksumarclick(nil);
exit;
end;
end;
end;
De esta manera al moverme a través de los registros, se me refresca el checkbox.
Se puede modificar el checbox apretando cualquier tecla, o con el click.
Si se quiere una tecla determinada, se hace un filtro if Key tal etc...
Un saludo