Prueba con este otro código a ver que te parece:
Código:
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
begin
if DBGrid1.SelectedIndex < Pred( DBGrid1.FieldCount ) then
begin
DBGrid1.SelectedIndex :=DBGrid1.FieldCount ;
end
else
begin
DBGrid1.SelectedIndex := 0;
//Flecha abajo es decir nuevo registro.
DBGrid1.Perform( wm_KeyDown, vk_Down, 0 );
end;
end;
end;
Un Saludo.