在一個窗體上有幾十個Controls. 我們知道按Tab健Controls可以按TabIndex獲得焦點,那麼,怎樣能使按Enter健實現同樣的功能, 我寫了如下代碼, 卻不管用, 誰幫我改一下, 多謝了!!
Ea100_2Frm.KeyPreview := true;procedure TEa100_2Frm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13 Then
    Ea100_2Frm.TabOrder := Ea100_2Frm.TabOrder + 1;
end;

解决方案 »

  1.   

    例:在Edit的Onkeydown事件中写入以下代码:
    if key=vk_return then
    begin
      key:=ord(0);
      perform(wm_nextdlgcel,0,0);
    end;
    同时把Form的keypreview属性设为True;即可.其它控件类同.
      

  2.   

    procedure TPowerEnter.FormKeyPress(Sender: TObject; var Key: Char);
    var i:integer;
    begin
      if FForm.KeyPreview and (key=#13) then
      with FForm do begin{ 判断是按执行键}
        if not ((ActiveControl is TCustomGrid) or (ActiveControl is TCustomMemo)) Then Begin { 不是在TDbgrid控件内}
          key:=#0;
          perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
        end
        else begin
          if (ActiveControl is TCustomGrid) Then //是在 TDbgrid 控件内
          With TCustomGrid(FForm.ActiveControl) Do begin
            Perform(WM_KEYDOWN ,VK_TAB ,0);
            for i:=0 to ComponentCount-1 do begin
              if Components[i] is TInplaceEdit then begin
                PostMessage(Tinplaceedit(components[i]).Handle, EM_SETSEL, 0, -1);//             TInplaceEdit(Components[i]).SelectAll ;
              end;
            end;
          end;  
        end;
      end;
    end;
      

  3.   

    比较全的判断,对GRID也有判断~~~~是个非可视组件,安装了以后往窗体上一拖就行了~~~很方便,要的话发消息,给你发过去~~