我有几件事情有问题:
edit1.text
为空(我认为它应该在onEnter事件上,但不是那么肯定)Edit1.text
分配到数组?所有这一切都说我要做的就是:
在编辑中输入名称,单击“输入”,然后在同一编辑和以前的名称中输入另一个名称以保存在某个变量或数组中。这甚至可能吗?
我尝试了procedure TForm1.Edit3Enter(Sender: TObject);
但是当我点击输入时没有任何反应。
答案 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事件。