编辑和 onEnter 事件

Edit and onEnter event

我有几个问题:

  1. 如何让 edit1.text 在我按下 enter 时变成空白(我认为它应该在 onEnter 事件上但不太确定)
  2. 有什么方法可以将 Edit1.text 中的字符串分配给数组吗?

综上所述,我想做的是:

在edit中输入一个名字,点击回车,然后在相同的edit中输入另一个名字和之前的名字保存在某个变量或数组中。这甚至可能吗?

我试过 procedure TForm1.Edit3Enter(Sender: TObject); 但是当我点击输入时没有任何反应。

OnEnter 事件在 Edit 控件接收到键盘输入时触发,而不是在用户按下 Enter 键时触发。您应该为此使用 OnKeyPress 事件,例如:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  S: String;
begin
  if Key = #13 then
  begin
    Key := #0;  
    S := Edit1.Text;
    Edit1.Clear;
    // do something with S...
  end;
end;

让我们构建一个简单的项目。将 TEdit 和 TListbox 添加到窗体。

 unit Unit1;

    interface

    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        ListBox1: TListBox;
        procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
        procedure Edit1Enter(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.dfm}
    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
     ShowMessage('On enter');
    end;

    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = 13 then
      begin
        ListBox1.Items.Add(Edit1.Text);
        Edit1.Text := '';
      end;

    end;

    end.

要检测按键事件,请使用任何 Key Down/Key Up 事件,我使用 Key Down。每次我点击输入时,编辑的字符串都会进入列表框。

这是在 delphi XE7 上。

也供您参考。 onEnter 事件,当您将焦点放在编辑字段上时会触发该事件。例如,在同一个项目上分配 onEnter 事件。现在单击列表框,然后单击 Edit1,您将触发 onEnter 事件。