К сожалению в текущей версии нет возможности внести изменения в базу при нажатии на данные CheckBox-ы, т.к. они не превязаны к какому либо полю в БД, поэтому необходим скрипт.
Пример
procedure Form1_GridSearch_OnChange (Sender: TObject);
var
i, c: integer;
begin
c := Form1.GridSearch.RowCount-1;
for i := 0 to c do
begin
// если в первой колоне (0) нет значения, то скрывает в пятой колоке (4) CheckBox, иначе присваиваем чекбоксу значение
if Form1.GridSearch.Cells[0, i]='' then Form1.GridSearch.Cell[4,i].Empty := True
else Form1.GridSearch.Cell[4,i].AsInteger := SQLExecute('SELECT isSmoke FROM person WHERE id='+IntToStr(Form1.GridSearch.dbIndexToID(i))); // это может работать медленно, если в гриде много записей
end;
end;
procedure Form1_GridSearch_OnEditAccept (Sender: TObject; ACol, ARow: Integer; Value: String; var Accept: Boolean);
begin
if (ACol=4) and (not Form1.GridSearch.Cell[ACol,ARow].Empty) then // если изменяют значения в пятой колонке и значение не является пустым
begin
if Value = 'True' then SQLExecute('UPDATE person SET isSmoke=1 WHERE id='+Form1.GridSearch.sqlValue)
else if Value = 'False' then SQLExecute('UPDATE person SET isSmoke=0 WHERE id='+Form1.GridSearch.sqlValue);
end;
end;
Dmitry.