现在的DBGRID只能在按下回车后才能移动到下一列,但我需要像ACCESS那样可以直接在按下方向键后转到下一列,我现在已经做到直接转到下一列,
  if (key=VK_right) and (DBGrid1.EditorMode) then
  begin
    PostMessage(DBGrid1.Handle, WM_KEYDOWN, VK_TAB, 0);
  end;
但是我想在其光标位于字符串末时按下向右才跳出。请各位大虾指点一二。

解决方案 »

  1.   

    指定其下一个字段处于edit状态!
      

  2.   

    for i := 0 to DBGrid1.Columns.Count -1 do
    begin
      if i= DBGrid1.Columns.Count -1 then
        if (key=VK_right) and (DBGrid1.EditorMode) then
          PostMessage(DBGrid1.Handle, WM_KEYDOWN, VK_TAB, 0); 
    end;
      

  3.   

    你可以這樣:
    procedure TForm1.DoEnterAsTab(var Msg:TMsg;var Handled:boolean);
    begin
    if Msg.message=WM_KeyDown then
    begin
      if Msg.wParam=VK_RETURN then
         keybd_event(VK_TAB,0,0,0);
    end;
      

  4.   

    好久没过来这边看了,感谢几位,to jakefj:我现在就是这样写的,但是我要的是像access那样的效果。to Wally_wu:我是想看能不能获取到光标到最后一个位置,因为如果是在最后一个位置也是在编辑状态,但是这样子的话也无法跳转。