请问诸位大侠,在数据量很大的情况下查询需要很长时间,如何制作一个窗体显示这个查询的执行时间。就是好像在游戏的安装过程中的进度条,或者是加载游戏时的LOADING!

解决方案 »

  1.   

    如果使用TADOQuery控件的话可以使用事件OnFetchProgress来处理

    先定义:
    ProgressBar1.max:=ADOQuery1.RecordCount;
    ProgressBar1.min:=1;
    在事件OnFetchProgress中的代码
    procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet; Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
      ProgressBar1.Position:=Progress;
      Application.ProcessMessages;
    end;
      

  2.   

    也可以这样:
    var
      i: Integer;
    begin
      with ProgressBar1 do
      begin
        Min := 0;
        Max := adoquery2.RecordCount;
        adoquery2.First;
        for i := Min to Max do
        begin
          Position := i;
          adoquery2.Next;
          // do something with the current record
        end;
      end;