timer1.Enabled:=true;
readdb();
timer1.Enabled:=false;程序一定要等到readdb()结束之后Edit1.text的内容才开始变化。
我知道用多线程可以解决问题,可是不会,能给个例子吗?
只要在readdb()的时候Edit1.text的内容会按要求变化就可以了。

解决方案 »

  1.   

    在改变edit1.text之后Application.ProcessMessages;看看多线程的例子Delphi本身有例程,在Program Files\Borland\Delphi7\Demos\Threads目录
      

  2.   

    加了Application.ProcessMessages不管用
      

  3.   

    我觉得这个问题还不至于用多线程。我想问一下,Edit的内容依赖于readdb()函数吗??如果不依赖,你这样试看看:    //此处添加使Edit内容变化的代码
         timer1.Enabled:=true;然后 把 readdb() 函数放到timer1去执行,即在Timer1的Timer事件中,写
         timer1.Enabled:=false;
         readdb();Timer设个30就可以。
      

  4.   

    你可以在修改Edit1.Text以后,试试Edit1.Refresh();应该就可以了
      

  5.   

    timer1.Enabled:=true;
    Application.ProcessMessage;
    readdb();
    timer1.Enabled:=false;
      

  6.   

    楼主,你在使用Timer前和后都用一个
      self.refresh;
    试试,如果可以的话,请楼主至少给我80分!
    记得!
      

  7.   

    如果readdb();里面有循环的话在循环体里面加Application.HandleMessage;
    否则只能用线程处理。
      

  8.   

    self.refresh;不管用
    readdb();就是一个单个的存储过程,执行时间大概要6秒这样子
      

  9.   

    哪位老大给个开两线程显示的程序吧,另开贴给200分,决不食言
    Program Files\Borland\Delphi7\Demos\Threads 这个没看懂
      

  10.   

    Edit1.text:='aaaa';
    Edit1.Repaint;
      

  11.   

    我测试过,经历数秒的耗时循环操作中间不断的改变Edit1.Text,用了Application.ProcessMessage之后都可以正常显示如果确实要尝试一下多线程,在没有特殊要求的情况下,继承TThread后只要把Execute方法override了就行了