private
    { Private declarations }
    FBook: string;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  Caption := Format('%.6f', [Now]);
  Edit1.Visible := TDBGrid(Sender).SelectedField.FieldName = 'id';
  if (TDBGrid(Sender).SelectedField.FieldName = 'id') and (Column.FieldName = 'id') and
    (TDBGrid(Sender).DataSource.DataSet.Book = FBook) then begin
    Edit1.Top := Rect.Top;
    Edit1.Left := Rect.Left;
    Edit1.Width := Rect.Right - Rect.Left + 1;
    Edit1.Height := Rect.Bottom - Rect.Top + 1;
    Edit1.SetFocus;
    FBook := '';
  end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Parent := DBGrid1;
end;procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
  FBook := TDataSource(Sender).DataSet.Book;
end;