如何用回车键在grid中控制光标纵向和横向移动?困惑好久了,帮帮忙把。

解决方案 »

  1.   

    1.设置dbgrid的option中的dgtabs为真
    2.在dbgrid的keypress中写:
      if key=#13 then key=9
      

  2.   

    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=vk_return then
      sendmessage (DBGrid1.Handle,WM_KEYDOWN,VK_TAB,0)
    end;
      

  3.   

    procedure TForm1.Grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key = VK_RETURN then
      begin
        if Grid1.Col = Grid1.ColCount - 1 then
        begin
          Grid1.Col := 0;
          Grid1.Row := Grid1.Row + 1;
        end else Grid1.Col := Grid.Col + 1;
      end;
    end;
      

  4.   

    procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key=#13 then
        if DBGrid1.SelectedIndex>=DBGrid1.Columns.Count-1 then
        begin
          DBGrid1.DataSource.DataSet.Next;
          DBGrid1.SelectedIndex:=0;
        end
        else
          DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;
    end;
      

  5.   

    1.设置dbgrid的option中的dgtabs为真
    2.procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if key = #13 then
      if not (activecontrol is Tdbgrid) then
      begin
          key := #0;
          perform(WM_NEXTDLGCTL,0,0);
      end
      else if (activecontrol is tdbgrid) then
      begin
         with TDBGrid(activecontrol) do
         if (selectedindex < fieldcount - 1) then
         selectedindex := selectedindex + 1
         else selectedindex := 0;
      end;
    end;
      

  6.   

    在Form.OnKeyPress事件中写如下代码:if Key = #13 then 
    if ActiveControl = DBGrid1 then begin 
    TDBGrid(ActiveControl).SelectedIndex := TDBGrid(ActiveControl).SelectedIndex + 1; 
    Key := #0; 
    end;
      

  7.   

    在DBGrid的OnKeyPress事件中begin
    if key=#13 then
        if DBGrid1.SelectedIndex < 5 Then    //DBGrid显示了6列 
           DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1
        else
           begin
             DBGrid1.SelectedIndex := 0;    // 光标到下一条记录第1列位置//
             with AdoQuery1 do
               begin
                 Next;
                 if EOF then Last;
               end;
           end;回车右移后到了最后一列时,光标移到下一条记录的第1列