在 onkeypress 事件中加入:
 if key = 下键
  then Perform(WM_NEXTDLGCTL,0,0);

解决方案 »

  1.   

    或者 
        form1.SelectNext(activecontrol,next,true)
          next = true  向后
          next = false 向前
      

  2.   

    设置Form.keypreview:=true;
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key=vk_Down then
        form.SelectNext(activecontrol,true,true)
      else
        if Key=vk_up then
          form.SelectNext(activecontrol,false,true)
    end;   
      

  3.   

    //编了快两小时
    //我自己也要的
    //我已经测试过
    //就是分太少了//pas
    unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Edit3: TEdit;
        Edit4: TEdit;
        Edit5: TEdit;
        Edit6: TEdit;
        Edit7: TEdit;
        Edit8: TEdit;
        Edit9: TEdit;
        Edit10: TEdit;
        Edit11: TEdit;
        Edit12: TEdit;
        Edit13: TEdit;
        Edit14: TEdit;
        procedure FormKeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      vFocusEdit: TEdit;
      vLeftEdit: TEdit;
      vRightEdit: TEdit;
      vDownEdit: TEdit;
      vUpEdit: TEdit;
      I: Integer;
    begin
      if not (Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]) then Exit;
      vFocusEdit := nil;
      for I := 0 to ControlCount - 1 do
        if (Controls[I] is TEdit) and TEdit(Controls[I]).Focused then begin
          vFocusEdit := TEdit(Controls[I]);
          Break;
        end;
      if not Assigned(vFocusEdit) then Exit;
      vLeftEdit := nil;
      vRightEdit := nil;
      vDownEdit := nil;
      vUpEdit := nil;
      for I := 0 to ControlCount - 1 do
        if (Controls[I] is TEdit) and (not TEdit(Controls[I]).Focused) then begin
          if ((TEdit(Controls[I]).Top + TEdit(Controls[I]).Height > vFocusEdit.Top) and
            (TEdit(Controls[I]).Top < vFocusEdit.Top + vFocusEdit.Height)) then begin
            if (TEdit(Controls[I]).Left + TEdit(Controls[I]).Width < vFocusEdit.Left) then
              if Assigned(vLeftEdit) then
                if (TEdit(Controls[I]).Left + TEdit(Controls[I]).Width >
                  vLeftEdit.Left + vLeftEdit.Width) then
                  vLeftEdit := TEdit(Controls[I])
                else
              else vLeftEdit := TEdit(Controls[I]);
            end;
          if ((TEdit(Controls[I]).Top + TEdit(Controls[I]).Height > vFocusEdit.Top) and
            (TEdit(Controls[I]).Top < vFocusEdit.Top + vFocusEdit.Height)) then begin
            if (TEdit(Controls[I]).Left > vFocusEdit.Left + vFocusEdit.Width) then
              if Assigned(vRightEdit) then
                if (TEdit(Controls[I]).Left <
                  vRightEdit.Left + vRightEdit.Width) then
                  vRightEdit := TEdit(Controls[I])
                else
              else vRightEdit := TEdit(Controls[I]);
            end;
          if ((TEdit(Controls[I]).Left + TEdit(Controls[I]).Width > vFocusEdit.Left) and
            (TEdit(Controls[I]).Left < vFocusEdit.Left + vFocusEdit.Width)) then begin
            if (TEdit(Controls[I]).Top + TEdit(Controls[I]).Height < vFocusEdit.Top) then
              if Assigned(vUpEdit) then
                if (TEdit(Controls[I]).Top + TEdit(Controls[I]).Height >
                  vUpEdit.Top + vUpEdit.Height) then
                  vUpEdit := TEdit(Controls[I])
                else
              else vUpEdit := TEdit(Controls[I]);
            end;
          if ((TEdit(Controls[I]).Left + TEdit(Controls[I]).Width > vFocusEdit.Left) and
            (TEdit(Controls[I]).Left < vFocusEdit.Left + vFocusEdit.Width)) then begin
            if (TEdit(Controls[I]).Top > vFocusEdit.Top + vFocusEdit.Height) then
              if Assigned(vDownEdit) then
                if (TEdit(Controls[I]).Top <
                  vDownEdit.Top + vDownEdit.Height) then
                  vDownEdit := TEdit(Controls[I])
                else
              else vDownEdit := TEdit(Controls[I]);
            end;
        end;
      case Key of
        VK_UP: if Assigned(vUpEdit) then vUpEdit.SetFocus;
        VK_DOWN: if Assigned(vDownEdit) then vDownEdit.SetFocus;
        VK_LEFT: if Assigned(vLeftEdit) then vLeftEdit.SetFocus;
        VK_RIGHT: if Assigned(vRightEdit) then vRightEdit.SetFocus;
      end;
    end;end.//dfm
    object Form1: TForm1
      Left = 188
      Top = 289
      Width = 401
      Height = 167
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'MS Sans Serif'
      Font.Style = []
      KeyPreview = True
      OldCreateOrder = False
      OnKeyDown = FormKeyDown
      PixelsPerInch = 96
      TextHeight = 13
      object Edit1: TEdit
        Left = 0
        Top = 8
        Width = 121
        Height = 21
        TabOrder = 0
        Text = 'Edit1'
      end
      object Edit2: TEdit
        Left = 136
        Top = 8
        Width = 121
        Height = 21
        TabOrder = 1
        Text = 'Edit2'
      end
      object Edit3: TEdit
        Left = 264
        Top = 8
        Width = 121
        Height = 21
        TabOrder = 2
        Text = 'Edit3'
      end
      object Edit4: TEdit
        Left = 0
        Top = 40
        Width = 121
        Height = 21
        TabOrder = 3
        Text = 'Edit4'
      end
      object Edit5: TEdit
        Left = 136
        Top = 40
        Width = 121
        Height = 21
        TabOrder = 4
        Text = 'Edit5'
      end
      object Edit6: TEdit
        Left = 264
        Top = 40
        Width = 121
        Height = 21
        TabOrder = 5
        Text = 'Edit6'
      end
      object Edit7: TEdit
        Left = 0
        Top = 72
        Width = 121
        Height = 21
        TabOrder = 6
        Text = 'Edit7'
      end
      object Edit8: TEdit
        Left = 128
        Top = 72
        Width = 65
        Height = 21
        TabOrder = 7
        Text = 'Edit8'
      end
      object Edit9: TEdit
        Left = 200
        Top = 72
        Width = 73
        Height = 21
        TabOrder = 8
        Text = 'Edit9'
      end
      object Edit10: TEdit
        Left = 280
        Top = 72
        Width = 105
        Height = 21
        TabOrder = 9
        Text = 'Edit10'
      end
      object Edit11: TEdit
        Left = 0
        Top = 104
        Width = 89
        Height = 21
        TabOrder = 10
        Text = 'Edit11'
      end
      object Edit12: TEdit
        Left = 96
        Top = 104
        Width = 121
        Height = 21
        TabOrder = 11
        Text = 'Edit12'
      end
      object Edit13: TEdit
        Left = 224
        Top = 103
        Width = 89
        Height = 21
        TabOrder = 12
        Text = 'Edit13'
      end
      object Edit14: TEdit
        Left = 320
        Top = 104
        Width = 65
        Height = 21
        TabOrder = 13
        Text = 'Edit14'
      end
    end