编辑和onEnter事件

时间:2015-04-27 18:57:05

标签: delphi delphi-7

我有几件事情有问题:

  1. 当我点击输入时如何使edit1.text为空(我认为它应该在onEnter事件上,但不是那么肯定)
  2. 有没有办法将字符串从Edit1.text分配到数组?
  3. 所有这一切都说我要做的就是:

    在编辑中输入名称,单击“输入”,然后在同一编辑和以前的名称中输入另一个名称以保存在某个变量或数组中。这甚至可能吗?

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

2 个答案:

答案 0 :(得分:8)

当编辑控件接收键盘输入时触发OnEnter事件,而不是当用户按下 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;

答案 1 :(得分:1)

让我们构建一个简单的项目。将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。每次我点击输入时,编辑的字符串都会进入ListBox。

这是在delphi XE7上。

也是为了您的信息。 onEnter事件,当您在编辑字段上设置焦点时触发它。例如,在同一个项目中分配onEnter事件。现在单击listBox然后单击Edit1,您将触发onEnter事件。