我是一位菜鸟.哈哈......
问题:
我用如下语句控制DBGRID控件中ENTER键行为,但是每到最后LAST记录时,焦点要在最后一条记录跑2次才循环至第一条记录,如此造成我的程序不够专业,请各位大虾指教,谢谢!
 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
           With TDBGrid(ActiveControl) do
              if SelectedIndex < FieldCount-1 then
                 SelectedIndex :=SelectedIndex +1
              else
                begin
                 SelectedIndex :=0;
                 if (qyMaster.State=dsEdit)
                    and (qyDetail.Eof)   then
                      begin
                      qyDetail.Next;
                      qyDetail.Append;
                      end
                  else
                    begin
                    if qyDetail.Eof then
                       begin
                       qyDetail.First;
                       end
                    else
                       qyDetail.Next;
                    end;
                end;

解决方案 »

  1.   

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