2015-04-27 40 views
0

我有问题,几件事情:编辑和的OnEnter事件

  1. 如何使edit1.text空当我按下回车键(我认为这应该是对的OnEnter事件,但不是很确定)
  2. 有什么如何将字符串从Edit1.text分配给数组?

说了这么多我想做的事是:

在编辑输入一个名称,点击进入,然后在相同的编辑和以前的名字输入另一名被保存在某个变量或数组。这甚至有可能吗?

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

回答

7

OnEnter事件在Edit控件接收到键盘输入时触发,而不是当用户按下时输入键。你应该使用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

让我们建立一个简单的项目。将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. 

要检测按键事件使用任何按键/按键事件,我使用了按键。每次我点击输入编辑的字符串进入列表框。

这是在delphi XE7上。

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

+0

呃,'OnKeyDown'是'OnKeyUp'完全不同。使用典型的Windows应用程序尝试自己。当琴键关闭或琴键上升时,控制器是否显示角色? –

+0

它可以同时工作,我在keyUp上添加了相同的代码,并且它执行相同的操作。这可能是不同的,但为了他的目的,它的工作。 – CiucaS

+0

不,它不。阅读文档,但作为一个快速总结,当键被**下来时,“OnKeyDown”被触发,而当键被键**时,“OnKeyUp”被触发。 –