unit adduse;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls;type
  Tadduserfrm = class(TForm)
    Edit1: TEdit;
    ComboBox1: TComboBox;
    CheckBox1: TCheckBox;
    DateTimePicker1: TDateTimePicker;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit5: TEdit;
    Label5: TLabel;
    ComboBox2: TComboBox;
    Label6: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    ComboBox3: TComboBox;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Panel1: TPanel;
    Bevel1: TBevel;
    Edit14: TEdit;
    Edit15: TEdit;
    Panel2: TPanel;
    DateTimePicker2: TDateTimePicker;
    DateTimePicker3: TDateTimePicker;
    GroupBox1: TGroupBox;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    ListBox1: TListBox;
    Label13: TLabel;
    Button1: TButton;
    Button2: TButton;
    Bevel2: TBevel;
    Button3: TButton;
    Button4: TButton;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
      procedure Edit3KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  adduserfrm: Tadduserfrm;implementation{$R *.dfm}
procedure Tadduserfrm.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=vk_return then
  edit3.SetFocus;
end;end.
就是在以上,怎么都不会响应‘回车键’啊,程序根本不执行下面的动作,光标不到edit3中,代码中我是怎么都看不出有错出来,可能是整个环境的因素,所以贴上所有代码那位大师能讲一讲看法吗,急!

解决方案 »

  1.   

    在onKeyPress中写
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key = #13 then
      begin
        Edit3.SetFocus;
        key := #0;
      end;
    end;
      

  2.   

    我一般都这样写procedure Tmainfrm.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if key=#13 then
         edit2.SetFocus;
    end;其中焦点要在edit1上。如果焦点不在,那当然不能执行“回车”事件。
      

  3.   

    还是不行,在Edit3KeyPress中也不行,可能是那是在响应回车的过程中有问题,不是代码的问题,以前我用过非常多次,也用的好好的,不知这次为何,但在其它的窗体中没有问题,就这个窗体有这个问题
      

  4.   

    是的代码都是没有问题的,只有这个窗体有这种情况出现,其它的都没有,我也检查了uses里的项,也不缺,也以现在不知道问题出在那里,
      

  5.   

    那就是窗体的问题,或控件属性的问题,如: TButton 设置为ok,就会有这个现象
      

  6.   

    procedure TFormInput.ctlCAccountKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    begin
      if Ord(Key) = VK_RETURN then
        SelectNext(TWinControl(Sender), True, True);
    end;其中,SelectNext将会选择在Tab列表中的下一个组件,也就是你按Tab键切换到的组件
      

  7.   

    是啊,可能是button中的一个有问题,如fei所讲的,因为我一按回车不是响应到下面执行的事件,而是button2按键的事件上去,但是代码中根本就没有响应button2事件的代码,不知何因,那位大师可否指点一二啊,急,也乱套了,而且所有的回车都是响应button2事件。
      

  8.   

    这个问题终于有答案了,是我将一个button的default属性设置为true,然后回车后的焦点事件都就集于此button上了,而优先下程序下面的代码,有谁能释一下原理吗,
      

  9.   

    原理很简单,在你按下回车时,定义了default的按钮优先抢到了回车消息进行处理,并截断了该消息