一、在最后一个Tdbedit中判断如果ord(key)=vk_tab则增加记录,将焦点移到要移的记录上去。如:
    if ord(key)=vk_tab then
      begin
         key:=chr(0);
         table1.append
         dbedit1.setfocus;        
      end;
二、在keypress事件中屏ESC,Enter键 ,
    如ord(key)=13    //回车
       then key:=chr(0);
三、case ord(key) of
      vk_down:;
      vk_up:;
      vk_left:;
      vf_right:;
    end;
说明:所有的键定义如vk_down在Windows单元中,可以将他打开查看

解决方案 »

  1.   

    同意lotto的观点。补充一点:
    对于问题一、需要加一个判断datasourse.state是edit,还是insert状态的判断,就可以区别当前是编辑还是插入状态,然后具体编程即可!
      

  2.   

    1.为DBGrid对应的表建立索引,如果一个字段还不能表示唯一条记录,就多建几个索引,特别是要关于你区别记录顺序的字段建立索引。然后在与DBGrid关联的Dataset的Indexfields属性指定这些索引,多个字段之间用分号隔开。再用就应该没有问题了。
      

  3.   

    Lotto:你以上說的方法是行不通的,因在控件中的dbedit按tab,entert及方向等鍵根本不響應它的keypress事件,所以在keypress事件中寫上任何語句都無濟于事,請你再次幫忙調試后告知!
     
      另:sunrised請各位delphi好手出手相助!!!!!!!!!
      

  4.   

    但是窗口的keypress可以检测到!注意:需要把窗口的keypreview设为ture!