procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  I: Integer;
begin
  case Key of
    VK_RETURN: begin
      I := TDBGrid(Sender).SelectedIndex;
      if I + 1 < TDBGrid(Sender).Columns.Count then
        Inc(I)
      else I := 0;
      while (I <> TDBGrid(Sender).SelectedIndex)
        and (not TDBGrid(Sender).Columns[I].Visible) do begin
        if I + 1 < TDBGrid(Sender).Columns.Count then
          Inc(I)
        else I := 0;
      end;
      if (I <= TDBGrid(Sender).SelectedIndex) and
        Assigned(TDBGrid(Sender).DataSource) and
        Assigned(TDBGrid(Sender).DataSource.DataSet) then
        TDBGrid(Sender).DataSource.DataSet.Next;
      TDBGrid(Sender).SelectedIndex := I;
    end;
  end;
end;function GetDBGridEdit(mDBGrid: TDBGrid): TEdit;
var
  I: Integer;
begin
  Result := nil;
  with mDBGrid do for I := 0 to Pred(ComponentCount) do
    if Components[I] is TCustomEdit then begin
      Result := TEdit(Components[I]);
      Break;
    end;
end; { GetDBGridEdit }procedure TForm1.DBGrid1Enter(Sender: TObject);
begin
  TDBGrid(Sender).EditorMode := True;
  if Assigned(GetDBGridEdit(TDBGrid(Sender))) then
    GetDBGridEdit(TDBGrid(Sender)).Color := clYellow;
end;