IF KEY=CHR(VK_RETURN) TEHN
POSTMESSAGE(EDIT1。HANDLE,VM_KEYDOWNM,VK_TAB,0)
这句话的意思是用回车代替TAB键,如果按下回车键就向edit1传送一个TAB键被按下的消息。

解决方案 »

  1.   

    可以设置form.keypreview=true,在onkeydown事件里设置
     if key=13 then
     begin 
       selectnext(activecontrol,true,true);
       key:=0;
     end; 
    就行了。
      

  2.   

    在Windows 环 境 下, 要 使 一 个控 件 取 得 焦 点, 可 在 该 控 件 上 用 鼠 标 单 击 一 下, 或 按Tab 键将 焦 点 移 至 该 控 件 上。 这 种 控 制 焦 点 切 换 的 方 法 有 时 不符 合 用 户 的 习 惯。 就 图 一 而  言, 用 户 就 希 望 用Enter 键,控 制 焦 点 由Edit1 切 换 到 Edit2。 要 实 现 这 样 的 功 能 需 借 助WinAPI 函 数SendMessage 来 完 成。 方 法 是: 先 设Form1 的KeyPreview 属 性 为true, 然 后 在Form1 的OnKeyPress 事 件 中 加 入 如 下 的 代 码。 这 样, 用 户就 可 以 通 过 按Enter, 键 控 制 焦 点 按 定 义 好 的Taborder 顺 序 来移 动 了 ! 
    procedure TForm1.FormKeyPress(Sender:TObject;var Key:char) ;
    bagin 
       if (Key=VK_RETURN) then //或者if key=#13 then
           begin
               SendMessage(Handle,WM_NEXTDLGCTL,0,0); 
               Key:=#0; 
           end;
    end.  
      

  3.   

    procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
        if key=#13 then
          if (ActiveControl is TDBEdit) then
            begin
    Key := #0;
    perform(WM_NEXTDLGCTL,0,0);
            end;
    if key=#13 then
        if (ActiveControl is TEdit) then
            begin
       Key := #0;
       perform(WM_NEXTDLGCTL,0,0);
           end;
    end;
      

  4.   

    看看这吧!需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击键:
    Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
    Begin
     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 TDbgrid(ActiveControl) Do
      if Selectedindex<(FieldCount-1) then
      Selectedindex:=Selectedindex+1{ 移动到下一字段}
      else Selectedindex:=0;
     end;
    End;
      

  5.   

    procedure TForm1.onkeydown(Sender: TObject; var Key: Char);
    begin
        if key=#13 then
          if (ActiveControl is TDBEdit) then
            begin
    Key := #0;
    perform(WM_NEXTDLGCTL,0,0);
            end;
    if key=#13 then
        if (ActiveControl is TEdit) then
            begin
      Key := #0;
      perform(WM_NEXTDLGCTL,0,0);
          end;
    end;