如题。

解决方案 »

  1.   

    dbgrid1.Fields[dbgrid1.SelectedField.Index+1].FocusControl;
      

  2.   

    为了防止下标越界加上如下判断
    if dbgrid1.SelectedField.Index+1<dbgrid1.FieldCount then
        dbgrid1.Fields[dbgrid1.SelectedField.Index+1].FocusControl;
      

  3.   

    上面的代码是在dbgrid的keypress事件中写的
    if key=#13 then  //13是回车的ascii码
    begin  if dbgrid1.SelectedField.Index+1<dbgrid1.FieldCount then
        dbgrid1.Fields[dbgrid1.SelectedField.Index+1].FocusControl;end;
      

  4.   

    if key=#13 then { 判断是按执行键}
        if not (ActiveControl is TDbgrid) Then
        Begin { 不是在TDbgrid控件内}
          key:=#0;
          perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
        end else
        if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
        begin
          With TDbgrid(ActiveControl) Do
            if Selectedindex<(FieldCount-1) then
              Selectedindex:=Selectedindex+1{ 移动到下一字段}
            else
            begin
              Dbgrid1.DataSource.DataSet.RecNo := Dbgrid1.DataSource.DataSet.RecNo + 1;
              Selectedindex:=0;
            end;
        end;
      

  5.   

    你应该在keypress中写如上代码
      

  6.   

    写在keypress and keydown都是随便的,,没有什么限制,,,,我以前做工程时的代码给你看看,希望对你有所帮助。procedure Tmainform.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key=13 then { 判断是按执行键}
             begin
               With TDbgrid(ActiveControl) Do
                  if Selectedindex<(FieldCount-1) then
                     Selectedindex:=Selectedindex+1{ 移动到下一字段}
                     else
                       begin
                       Selectedindex:=0;
                       dbgrid1.DataSource.DataSet.fields[0].readonly:=false;
                       tdbgrid(activecontrol).datasource.dataset.append;
                       tdbgrid(activecontrol).datasource.dataset.fields[0].asstring:=inttostr(tdbgrid(activecontrol).datasource.dataset.recordcount+1);
                       tdbgrid(activecontrol).datasource.dataset.post;
                       dbgrid1.DataSource.DataSet.fields[0].readonly:=true;
                       Selectedindex:=Selectedindex+1;
                       mainform.StatusBar1.Panels[0].Text:='学生在记总数为:'+inttostr(tdbgrid(activecontrol).datasource.dataset.recordcount);
                       end;
             end;
    end;祝:身体健康,答案和分数同样重要:)!!
      

  7.   

    procedure TForm3.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    with TDBGrid(Activecontrol)do
     begin
       if not(key=#13)then
         begin
           key:=#0;
           showmessage('对不起!该表格仅供阅览');
         end
       else if key=#13 then
         begin
               if selectedindex<(fieldcount-1) then  selectedindex:=selectedindex+1
               else
                 begin
                    if not table1.Eof then
                       begin
                         table1.next;
                         selectedindex:=0;
                      end;
                   if table1.Eof then showmessage('已到库尾!');
                end;//end of else
       end;//end of if with
      end;
     end;
      

  8.   

    if dbgrid1.SelectedField.FieldName='LastFieldName' then
          begin
            if dbgrid1.DataSource.DataSet.State in[dsEdit,dsInsert] then
              dbgrid1.DataSource.DataSet.Post;  //以便返回正确的RecordCount
            if dbgrid1.DataSource.DataSet.RecNo=dbgrid1.DataSource.DataSet.RecordCount then
              dbgrid1.DataSource.DataSet.Append //最后一行进行添加
            else
              dbgrid1.DataSource.DataSet.Next;  //否则跳到下一行
            dbgrid1.SelectedIndex:=0;
          end
          else
          begin
            dbgrid1.SelectedIndex:=dbgrid1.SelectedIndex+1;
          end;