在dbgrid的ONKeyPress中加入:
if key=#13 then
begin
  key:=#0;
  postmessage(activecontrol.handle,WM_KeyDown,vk_tab,0);
end;

解决方案 »

  1.   

    var ls:=DBGrid1.SelectedIndex;
    //if ls<dbgrid1.Columns.count-1 then

    DBGrid1.SelectedIndex:=ls+1;
      

  2.   

    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;