用于判断是否手动输入还是 扫描枪扫入的,如果大于2秒钟输入就清空文本框内容谢谢了

解决方案 »

  1.   

    那你就在edit的onchange事件调用timer1.enable := True;
      

  2.   

    procedure TSaleForm.edt1Change(Sender: TObject);
    begin  timer1.enable := True;  edt1.Clear;
    end;这样行吗
      

  3.   

    这样当然不行了,edit1.clear要写在timer.ontime事件里
      

  4.   

    代码怎么写呢 对TIMER不太熟悉 
      

  5.   

    timer的属性enable先设置成false,然后当ontimer时判断是否到了两秒了,到了两秒没动那么eidt1.clear
      

  6.   

    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
       edt1.Clear;
    end;procedure TForm1.edt1Change(Sender: TObject);
    begin
       tmr1.Enabled:=true;
    end;我这样好像不可以 贴点代码给我参考下吧
      

  7.   


    //楼主可以换个思路,timer控件不是用来计时,而是用来不断发生事件
    //计时的功能让GetTickCount函数来做
    //我给你改了如下:var
      iLastChangeTime: Cardinal;procedure TForm1.edt1Change(Sender: TObject);
    begin
      iLastChangeTime := GetTickCount; //记录一下此时的时间
    end;procedure TForm1.tmr1Timer(Sender: TObject);
    begin
      //tmr1的间隔可以设小一点,不断的来判断是否超时
      if GetTickCount - iLastChangeTime >= 2000 then edt1.Clear;
    end;
      

  8.   

    timer的属性enable先设置成false,然后当ontimer时判断是否到了两秒了,到了两秒没动那么eidt1.clear
      

  9.   


    怎么判断呢 我对TIMER控件不熟悉 没找到相关的属性
      

  10.   

    怎么样在ONTIMER里进行时间判断呢 
    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
       edt1.Clear;
    end;只要文本框里一旦触发了ONCHANGE事件 我连续按键的话 不会重新触发ONTIME事件吗??