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;
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号