doevent是将程序控制权移交操作系统吗?
你的问题也不明确,可能的答案应该是
1、application.ProcessMessages; 
2、Sleep;
3、什么都不作,本来就在主循环中。

解决方案 »

  1.   

    doevent一般放在主循环里的,每次循环执行一下,免得主循环占用太多,让‘取消’键派不上用场,确实用application.ProcessMessages 可以代替doevent,但是我发现其实多线程应当更好
    不过用多线程执行ADO总报错,不知为什么,请诸位大虾再给瞧瞧看看,先谢了
    代码:
    procedure TForm1.Button1Click(Sender: TObject);
    begin  ThTest:=ttest.Create(AdoQuery1);
    end;constructor ttest.Create(ADOQ: TADOQuery);
    begin
    ADOQuery:=ADOQ;
    inherited create(false);
    end;procedure ttest.Execute;
    beginadoquery.SQL.Text:='select sum([Interval]) from Recordtab ';
    adoquery.Open;//在此出错
    if not (adoquery.Eof and adoquery.Bof) then
    begin
       adoquery.Recordset.MoveFirst;
       GetVal:=adoQuery.Recordset.Fields[0].value;
    end;end;
    主要是执行一个SQL汇总,用ADO调用MDB数据库