Delphi 编辑和编辑事件
我有几个问题: 如何使edit1.text在我按enter键时为空我认为应该是在OneNet事件上,但不太确定 有没有办法将Edit1.text中的字符串分配给数组? 说到这里,我想做的就是: 在“编辑”中输入名称,单击“输入”,然后在同一个“编辑”中输入另一个名称,以及要保存在某个变量或数组中的上一个名称。这可能吗 我尝试了程序TForm1.Edit3EnterSender:TObject;但当我单击enter时,什么也不会发生。当编辑控件接收到键盘输入时,而不是当用户按下enter键时,会触发OnNet事件。您应该使用OnKeyPress事件来进行此操作,例如:Delphi 编辑和编辑事件,delphi,delphi-7,Delphi,Delphi 7,我有几个问题: 如何使edit1.text在我按enter键时为空我认为应该是在OneNet事件上,但不太确定 有没有办法将Edit1.text中的字符串分配给数组? 说到这里,我想做的就是: 在“编辑”中输入名称,单击“输入”,然后在同一个“编辑”中输入另一个名称,以及要保存在某个变量或数组中的上一个名称。这可能吗 我尝试了程序TForm1.Edit3EnterSender:TObject;但当我单击enter时,什么也不会发生。当编辑控件接收到键盘输入时,而不是当用户按下enter键时,会触
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.
要检测按键事件,请使用任何按键向下/按键向上事件,我使用了按键向下。每次我点击“输入”时,编辑字符串就会进入列表框
这是在DelphiXe7上
也供您参考。OneNet事件在编辑字段上设置焦点时触发。例如,在同一个项目上,分配OneNet事件。现在单击列表框,然后单击Edit1,您将触发oneter事件。Er、OnKeyDown和onkeydup是完全不同的。自己试试典型的Windows应用程序。该控件是在按键向下还是向上时显示字符?它是双向工作的,我在按键向上添加了相同的代码,它做了相同的事情。这可能是不同的,但对他的目的来说,它是有效的。不,它不是。阅读文档,但作为一个简短的总结,OnKeyDown在按键按下时启动,onkeydup在按键上升时启动。很明显,一个按键按下,一个按键上升,但我认为他永远不会遇到onkeydup在他的情况下不会启动的情况,因为他按enter键,所以会执行按键下降和按键上升事件。我遗漏了什么?关键是当按键时程序应该响应,因为这是平台标准。无论如何,在这种情况下使用OnKeyPress。