这好像是换行吧?
另外,如果使用的是ADOtable控件作数据源呢?

解决方案 »

  1.   

    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) or
           TDBGrid(Sender).Columns[I].ReadOnly) 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;
      

  2.   

    if key=13 then
        Key=VK_TABzswang(伴水)(* pascal→c *) 
    你那样的代码我也写得出来,不过我没有2个红星
    呵呵
    别笑,试试我的代码看和你的有什么区别
    如果你的dataset 里有计算字段或lookup字段,
    他们的属性大概不一定是readonly=true吧,
    你的还不如我的呢,呵呵
      

  3.   

    sdf163(飘飘摇) :
    高人哪!
      

  4.   

    献丑! 呵呵!
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key = 13 then
      begin
        if DBGrid1.SelectedIndex < DBGrid1.FieldCount - 1 then
          DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1
        else
          key := VK_TAB;
      end;
    end;
      

  5.   

    如果dataset 里有计算字段或lookup字段
    那我觉得还不如自己一条一条的写
     if DBGrid1.SelectedField.FieldName = '列1' then     
       begin
          DBGrid1.SelectedField := yourdataset.FieldByName('列2');
          exit;
       end;   if DBGrid1.SelectedField.FieldName = '列2' then     
       begin
          DBGrid1.SelectedField := yourdataset.FieldByName('列3');
          exit;
       end;
    因为LOOKUP 何计算字段一般应该不会要输入东西巴
      

  6.   

    to sdf163(飘飘摇):我也记不清楚为什么要这样写了,你的方法确实可行procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      case Key of
        VK_RETURN: Key := VK_TAB;
      end;
    end;
      

  7.   

    编程将回车替换成TAB 不能避开LOOKUP和计算字段,不太好