我查了好多原先的帖子,但都不行,大部分都是模拟Tab键,但那样会跳到下一行而不是下一个单元格,请各位踊跃发言!

解决方案 »

  1.   

    这段代码应该就是你要的,按回车光标就跳到下一个单元格。
    如果在行的最后一列,会跳到下一行的第一格。
    如果在表的最后一列,会跳到第一行的第一格。
    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
            if Key = #13 then
            begin
                    if DBGrid1.SelectedIndex = DBGrid1.FieldCount-1 then
                    begin
                            DBGrid1.SelectedIndex := 0;
                            DBGrid1.DataSource.DataSet.Next;
                            if DBGrid1.DataSource.DataSet.Eof then
                                    DBGrid1.DataSource.DataSet.First;
                    end
                    else
                            DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;
            end;
    end;
      

  2.   

    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
            if Key = #13 then
            begin
              DBGrid1.DataSource.DataSet.Next;
              if DBGrid1.DataSource.DataSet.Eof then
                 DBGrid1.DataSource.DataSet.First;        end;
    end;
      

  3.   

    最简单的代码
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=13 then
        Key := vk_Tab;
    end;
      

  4.   

    if Key = #13 then { 如果按下了回车键 }
     begin
       Key := #0; { 吃掉回车键 }
       if dbgrid1.Selectedindex<dbgrid1.FieldCount-1 then
         dbgrid1.Selectedindex:=dbgrid1.Selectedindex+1
       else
         dbgrid1.Selectedindex:=0;
     end;
      

  5.   

    if key = #13 then
    sendmessage(activecontrol.handle,wm_keydown,vk_tab,0);
      

  6.   

    谢谢各位,不错,有几个能实现我需要的功能,但另外几个还是Tab键,谢谢参与,散分