☆★☆★要求在EDIT中输入第三个字符到第六个字符之间的时间为一秒,如果超过一秒,则EDIT1.TEXT=''怎么做?☆★☆★

解决方案 »

  1.   

    用一个Ttimer 控件,设定为一秒触发。然后将enabled设定为不可用。
    在edit的press事件中,判断是否输入了大于三个字符,(只要length(edit1.text)就可以了),然后将ttimer 的enabled设定为可用,在timer的事件里,将edit.text:=‘怎么做'您认为可以么?不行,给我发消息
      

  2.   

    用一个Ttimer 控件,设定为一秒触发。然后将enabled设定为不可用。
    在edit的press事件中,判断是否输入了大于三个字符,(只要length(edit1.text)就可以了),然后将ttimer 的enabled设定为可用,这里加一个吃掉键值 的语句key:=#0;在timer的事件里,将edit.text:=‘怎么做'您认为可以么?不行,给我发消息
      

  3.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    showmessage('how to do?');
    end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if (length(edit1.Text)>=3) and (length(Edit1.text)<=6) then
        Timer1.OnTimer(Timer1);
    end;
    给你源代码.
    我调试过,可行!
      

  4.   

    在Edit的相应事件中OnEdit1KeyDownChanged()或OnkeyPress()中设置一个计数器,用来记录当前输入字符数,当检查到计数器值为3时就开始调用Win32Api
     GetTickCount(void)函数,并记录下它的返回值,而后继续接收键盘输入,直到计数器为6,再调用GetTickCount(),保存返回值,然后比较前后的差值是否等于
    您设定的秒数,如果是,则OK,否则Edit1.Clear();
    ...
    明白没有?:)
      

  5.   

    同意4楼的,可以通过keypress或者keydown来判断edit中的字符长度length(edit.text),然后当到了3的时候就启动ttimer(interval为1000毫秒)。
    当时间到的时候就做ttimer里的东西,包括检查长度和停止ttimer。这个比较容易控制。
      

  6.   

    这个完全可以按照lth_81(垣) 所描述的方案来做,对于键盘输入800001的处理,放在ttimer.OnTimer中处理,判断edit的字符是否为800001,若是的话则不管是否超时,均不做清除处理!
      

  7.   

    var
      s1,s2:string;
         i :integer;
    begin
      s1:='800001';
    timer.enabled:=false;
    TIMER1.interval=1000procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      edit1.text:='怎么做';
    end;procedure TForm1.edit1keypress(sender:tobject;var key:char)begin
        i:=length(edit1.text);
        s2:=copy(s1,1,i);//从s1(800001)中读取i个字符,用来判断输入
    //是否为80001
        if s2<>trim(edit1.text)  then timer.enabled:=true  else
       begin key:=#0 ;exit; end;
    end;end.
    没有经过调试,有什么问题,你应该可以解决的,我希望能给你提供一个思路。
      

  8.   

    忘记加上判断是否为第三个字符了。这样就可以了。var
      s1,s2:string;
         i :integer;
    begin
      s1:='800001';
    timer.enabled:=false;
    TIMER1.interval=1000procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      edit1.text:='怎么做';
    end;procedure TForm1.edit1keypress(sender:tobject;var key:char)begin
        i:=length(edit1.text);
        if i<3 then exit;
        s2:=copy(s1,1,i);//从s1(800001)中读取i个字符,用来判断输入
    //是否为80001
        if s2<>trim(edit1.text)  then timer.enabled:=true  else
       begin key:=#0 ;exit; end;
    end;end.
      

  9.   

    这里没有考虑到有人用复制,粘贴时的情况。如果需要,可以禁用此种方法
    或在edit.onchange事件中做,其实很简单的。