关于进度条(45分)

  • 主题发起人 主题发起人 webb
  • 开始时间 开始时间
W

webb

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用进度条显示一个select语句的执行过程?
 
用ADO的异步方式
 
to 张兄:
能否具体些?
 
計下select ... run 的時間就可,
然後去實現
 
我认为这个东西有好多实现的方法 看你怎么想了!
 
关键问题是不影响SQL的执行效率
 
李维的书上有!
 
ADOQuery.LockType:=ltBatchOptimistic;
再编写OnFetchProgress事件.
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
//按你的要求处理Progress和maxprogress
end;
 
Button1的单击事件中:
ProgressBar1.Position:=0;
AdoQuery1.Prepary:= True;
AdoQuery1.Open;
在AdoQuery1的FetFetchProgress事件中加入
ProgressBar1.Max:=MaxProgress;
ProgressBar1.Position:=Progress;
Application.ProcessMessages;
即可
 
adoquery1.executeoptions.eoasyncfetch := True;
adoquery1.CursorLocation :=clUserClient;
再编写OnFetchProgress事件.
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=981724
 
我感觉异步查询比一般的要慢些,
可能是我写得不对,
有谁能给个例子
 
set
adoquery1.executeoptions.eoasyncfetch := True;
adoquery1.CursorLocation :=clUserClient;
procedure TForm1.Button1Click(Sender: TObject);
begin
with Adoquery1 do
begin
close;
open;
end;
end;

procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
var
i:integer;
begin
ProgressBar1.step:=ProgressBar1.Max div MaxProgress;
for i:=1 to MaxProgress do
ProgressBar1.StepIt;
ProgressBar1.StepBy(ProgressBar1.Max-ProgressBar1.Position);
end;
 
我的这个问题刚刚解决,需要的话去我那里看看:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2571308
还有什么问题可以问我,MSN:hongyanchang521@hotmail.com
 
不过,我知道你为什么没几个人回答了,我的那个问题用了200分啊,你才给这么少,确实这个问题还是有点难度的,结合了几个人我才解决,幸运中,也向帮过我的人表示感谢。
 
后退
顶部