编辑和 onEnter 事件
Edit and onEnter event
我有几个问题:
- 如何让
edit1.text
在我按下 enter 时变成空白(我认为它应该在 onEnter 事件上但不太确定)
- 有什么方法可以将
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 事件。
我有几个问题:
- 如何让
edit1.text
在我按下 enter 时变成空白(我认为它应该在 onEnter 事件上但不太确定) - 有什么方法可以将
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 事件。