从输入首字符开始计时 到edit框失去焦点的时候结束 如果输入时间超过1秒 则清空edit框的内容
我是像下面这样写的 针对edit1 但是感觉如果edit多了的话 扩展性不好 请指正 谢谢
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Timer1: TTimer;
Edit2: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure ClearEditText(Sender:TEdit);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.ClearEditText(Sender: TEdit);
begin
Sender.Text := '';
Timer1.Enabled := False;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Edit1.Focused then
ClearEditText(Edit1);
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Timer1.Enabled := true;
if key = #13 then
begin
edit2.SetFocus;
Timer1.Enabled := false;
end;
end;end.
我是像下面这样写的 针对edit1 但是感觉如果edit多了的话 扩展性不好 请指正 谢谢
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Timer1: TTimer;
Edit2: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure ClearEditText(Sender:TEdit);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.ClearEditText(Sender: TEdit);
begin
Sender.Text := '';
Timer1.Enabled := False;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Edit1.Focused then
ClearEditText(Edit1);
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
Timer1.Enabled := true;
if key = #13 then
begin
edit2.SetFocus;
Timer1.Enabled := false;
end;
end;end.
条码枪输入 时间不会超过1秒
onEnter里面timer1 := GetTickCount;
onExit里面timer2 := GetTickCount;
if (timer2 - timer1) > 1000 then
edit.clear;
接着再动态生成edit控件就行了...只能提供思路,具体的你自己解决吧.