如何用ProgressBar即进度条显示数据查询的进度?
希望有详细程序!
本人找了好多资料都没有,希望熟悉这方面的高手帮忙帮忙!!

解决方案 »

  1.   

    目前只有ADO方式支持异步查询,能返回查询的进度。
      

  2.   

    李维的《Delphi 5.X ADO_MTS_COM+高级程序设计篇》上有讲。
      

  3.   

    adoquery1的executeoptions中的eoasyncfetch或eoasyncfetchnonblocking应该设置为true。其中eoasyncfetchnonblocking适合大型数据库
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      form1.ADOQuery1.Close;
      form1.ADOQuery1.SQL.Clear;
      form1.ADOQuery1.SQL.Add('select * from customers');
      form1.ADOQuery1.Open;
    end;procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
      Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
      form1.ProgressBar1.Position:=progress*100 div maxprogress;
      Application.ProcessMessages;
    end;
      

  4.   

    to lovelymelon(小人物):
     你的做法好象不是很灵验啊,我试了试怎么不行,请指导一下
      

  5.   

    up3 lovelymelon(小人物) 的办法好象不能弄,或者是我弄的时候出错吧
    大家还办法么,说详细点吧
      

  6.   

    参考李维的书《Delphi 5.X ADO_MTS_COM+高级程序设计篇》一书,里面有一个例子的(使用ADO的异步工作方式),下载链接:
    http://www.pdown.net/list.asp?id=463
      

  7.   

    pazee(耙子)(三个代表) 
    能够给个例子吗?
    谢谢!~~
      

  8.   

    {下面的描述是很久前我在Delphibbs上提出的一个问题,没有人给出解决办法}
    用ADO连接SQL Server数据库时,
    设置 
       ADODataSet1.ExecuteOptions := [eoAsyncFetchNonBlocking];然后写如下处理(从帮助中直接copy来):
    procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
     Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
     Caption := 'Percent complete: ' +
       IntToStr(Trunc(Progress / MaxProgress * 100)) + '%';
     Application.ProcessMessages;
    end;执行结果: Progress 开始为0 ,结束为 1;MaxProgress 始终为 1 。