我再操作数据库的过程中,如打开一个表adoquery1.open;这个表的记录很大,需要10几秒才能打开,我需要在打开这个adoquery1时,先调用另一个窗口显示请稍等,同时加上animate控件,却发现animate动画不动,请问如何解决,搜索了一下说用多线程能实现吗?

解决方案 »

  1.   

    show之后要
    等待窗体.update;
      

  2.   

    同时加上animate控件,却发现animate动画不动
    --------------------------------------
    active了没有?
      

  3.   

    当执行一条很长时间语句时,等待窗体上的任何控件都无法更新,animate也动不了,包括gif动画也动不了
      

  4.   

    先调用另一个窗口显示请稍等,比如所调窗体是form2。则要:animate.upper;
    form2.upper;
      

  5.   

    错了,是:animate.Update; 
    form2.Update;
      

  6.   

    animate.Update;   
    form2.Update;
    没有用的,我试过了,我的代码
    //加载等待窗口
        WaitForm := TWaitForm.Create(self);
        WaitForm.Label1.Caption := '正在打开数据...';
        WaitForm.Animate1.Active := True;
        WaitForm.show;
        WaitForm.Animate1.Update ;
        WaitForm.Update ;
        application.ProcessMessages;
    //打开数据(由于记录多,打开需要一定时间)
        ADOQuery1.Open ;
    //关闭等待窗口
        WaitForm.Free;
        WaitForm:= nil;为什么动画动不了呢?多线程如何解决?
      

  7.   

    只能用多线程
    TOpenThread = class(TThread)
    protected
      procedure Execute; override;  //实现这个方法,在这个方法中打开Query
    end;