新年好,我刚开始学DELPHI,在我的程序中有两个TEDIT控件,在第一个TEDIT控件中输入相关信息后按ENTER按将焦点移到下一个TEDIT控件,请问在ONKEYDOWN事件中如何判断用户是否按下ENTER键?(我DELPHI版本是6.0)

解决方案 »

  1.   

    if (Key = VK_ENTER) then
      edit2.SetFocus;
      

  2.   

    试试这样,我前几天刚做过:
    在edit1的onkeypress中写:
    if key=#13 then
       edit2.setfocus;
      

  3.   

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if key=13 then ......
    end;
      

  4.   

    我记得enter键的键值是13,如果不是,你可以自己在edit1的onkeypress中写showmessage(key)来看看按下enter它的键值是多少。
      

  5.   

    if (Key = VK_ENTER) then  if key=13 then 
      

  6.   

    奥,不对,应该是showmessage(inttostr(key));
    另外,用chechy提到的Key = VK_ENTER也是一样的。关键是在哪个事件里用。你试试onkeypress和onkeydown到底是哪一个。
    再另外,送给你另一个:
      限制edit1里只能输入字母或<-键:
      在edit1的onkeypress里写
         if (not(key in ['a'..'z','A'..'Z'])) and (not (key=#8)) then
         begin
             showmessage('请输入字母');
             key:=#0;
         end;
      限制edit里只能输入数字也是一样的道理。
      

  7.   

    To: chechy
    From: frankzheng
    断点我设过,但是没有起作用,你的怀疑可能是对的。
      

  8.   

    那么检查你的Form,还有Object Inspector吧。
      

  9.   

    To:chechy
    我的程序不在单位,可以把你EMAIL地址给我吗? 如果有问题我想通过EMAIL和你联系。
      

  10.   

    FORM里有一个属性是K打头的,忘记了:)把它设为TRUE,就OK了!!
      

  11.   

    OnKeyPress响应WM_CHAR消息,所以是控制字符回车,也就是#13OnKeyDown响应WM_KEYDOWN消息,所以是键值13,VK_ENTER是值为13的常量是Edit1的OnKeyDown事件,不是窗体的