我想用两个线程,一个显示进度,一个用来数据库查询(100分)

  • 主题发起人 主题发起人 halei
  • 开始时间 开始时间
H

halei

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库查询用adoquery
能给出例子(代码)出来吗?
万分感谢!
 
如果只是一个SQL的查询,那么是没有进度可言的。。。
你还是一般做,遇到什么问题再问吧,或许好一点。[^]
 
TMyThread=class(TThread) //查询线程
private
FTimer:TTimer;
FThread:TThread;
FLabel:TLabel;
Fprobar:Tprogressbar;
procedure updateform;
procedure Terminateother(AThread:TThread);
protected
procedure execute;override;
public
constructor create(ATimer:TTimer;Alabel:Tlabel;AThread:TThread;Abar:TProgressbar);overload;
end;
TupThread=class(TThread) //更新进度条进程
private
count,position:integer;
FLabel:Tlabel;
FTimer:Ttimer;
FProbar:TProgressBar;
protected
procedure execute;override;
public
constructor create(ATimer:Ttimer;ALabel:Tlabel;AProbar:TProgressbar);overload;//cancel Atimer
procedure updateform;
end;
procedure TupThread.updateform;
begin
if FLabel.Caption<> '正在....' then
begin
FLabel.Caption:='正在....';
Flabel.Refresh ;
end;
if Fprobar.Position=Fprobar.Max then
Fprobar.Position:=0;
Fprobar.Position:=Position div 400;
end;
procedure TmyThread.execute;
var registry:TRegistry;
filename:string;
mappath:string;
temppath:string;
bakfilename:string;
substr:string;
begin
{查询}
// synchronize(updateform);
Terminateother(FThread);
Terminate;
end;

upthread:=TupThread.create(timer1,label1,progressbar1);
mythread:=TMyTHREAD.create(timer1,label1,upthread,progressbar1);
 
我有一个sql查询。由于数据量非常大,而且查询很复杂,我一adoquery.open后,
要5、6分钟才能出来结果
我又不能用异步查询。所以我想用两个线程,一个用来显示进度,一个用来查询。
但我是新手。没用过线程。所以请各位多多指教。
最好简单点,因为我不是很理解线程,就只要在查询的同时能有个进度条在动就行了,
不要很准确。
谢谢
 
另建一个FORM2在其上放一Timer和一个进度条,在OPEN前FORM2.SHOW并激活TIMER让进度条
开始动起来在OPEN后CLOSE
 
接受答案了.
 
后退
顶部