Delphi onChange的延迟执行功能

今天群里有网友说Edit不想通过回车键执行查询,也不想每次change都执行查询,我就提出了这个方案.GetIdleTime是获取键盘与鼠标距离上次输入的时间.

这里声明了两个全局私有变量i和flg,其中i不是必须的,只是用来观测时间值.

 

 

var
  i: Cardinal;
  flg: Boolean = False;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  flg := True;
  Timer1Timer(Sender);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  i := GetIdleTime;
  if (i > 500) and (flg = True) then  //500毫秒
  begin
    flg := False;
    //延迟执行代码
    Memo1.Lines.Add(i.ToString);
  end;
end;

function TForm1.GetIdleTime: Cardinal;
var
  pill: TLastInputInfo;
begin
  ZeroMemory(@pill, SizeOf(pill));
  pill.cbSize := SizeOf(pill);
  GetLastInputInfo(pill);
  Result := GetTickCount - pill.dwTime;
end;

 

posted @ 2022-11-16 11:41  一曲轻扬  阅读(237)  评论(0)    收藏  举报