先设FORM 的KeyPreview 的属性为true;然后在KEYDOWN事件中:if Key=VK_UP then
   begin
   PostMessage(Handle,WM_NEXTDLGCTL,1,0);
   Key:=0;
   end 
if Key=VK_DOWN then
   begin
   PostMessage(Handle,WM_NEXTDLGCTL,0,0);
   Key:=0;
   end注意:最好用PostMessage, 不宜用SendMessage

解决方案 »

  1.   

    下面是一段程序,可以实现敲击Enter设置焦点到下一个控件:
    procedure TAppbarMain.FormKeyPress(Sender: TObject; var Key: Char);
    begin
        if(Key=VK_RETURN) then
          begin
          SendMessage(Handle,WM_NEXTDLGCTL,0,0); 
          Key:=0; 
          end;
    end;          
      

  2.   

    下面的程序可以实现Enter把光标移动到下一个Edit
      if Key=#13 then { 判断是按执行键}
      if not (ActiveControl is TDbgrid) Then
      Begin { 不是在TDbgrid控件内}
    //    key:=#0;
        perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
      end else
      if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
      begin
      With (ActiveControl as TDbgrid).DataSource.DataSet Do
      if not eof then next
      else perform(WM_NEXTDLGCTL,0,0);
    {    if Selectedindex<(FieldCount-1) then
           Selectedindex:=Selectedindex+1 // 移动到下一字段
        else Selectedindex:=0;               }
      end;
      

  3.   

    当我编译时,PostMessage(Handle,WM_NEXTDLGCTL,1,0);这句通不过,报错为[Error] dlUnit.pas(92): Undeclared identifier: 'WM_NEXTDLGCTL'如何解决
      
      

  4.   

    你要设好各个控键的tabstop属性,设定好他们的次序,把按钮放到后面,这样就会好了
    如果你想回到上一个控件,就用shift+Tab组合键