处理大量数据时的问题(100分)

  • 主题发起人 主题发起人 xumin23
  • 开始时间 开始时间
X

xumin23

Unregistered / Unconfirmed
GUEST, unregistred user!
将Excel表中的数据导入到我的数据库时,由于数据量比较大,需要十几分钟
但是导入时,程序的界面看起来好像没有响应一样,实际上还在导入数据
我在循环中加了一句label1.caption := recordcount
但是label没有显示,请问可以用什么方法告诉用户此程序还在运行,并不是无响应
 
在循环中加
Application.ProcessMessages;
...你的提示信息
 
可以用单点调试查看.
 
我知道程序还在运行,但是我只是想让用户也知道程序还在运行而不是没有响应
 
Application.ProcessMessages
或者多线程
 
在数据处理之前自己动态创建一个Form,
等到数据处理完后,释放掉。

var
myform:tform;
mylabel:tlabel;
...
begin
...
myform:=tform.Create(application);
try
with myform do
begin
font:=calculate_r.Font;
canvas.Font:=font;
borderstyle:=bsnone;
bordericons:=[];
caption:='';
formstyle:=fsstayontop;//使动态产生的form出现在最顶层。
myform.ClientWidth:=200;
clientheight:=40;
position:=poScreenCenter;
end;
mylabel:=tlabel.Create(myform);
mylabel.Parent:=myform;
mylabel.AutoSize:=true;
mylabel.Top:=15;
mylabel.Left:=40;
mylabel.Caption:='数据处理中,请稍后......';
myform.Show;
application.ProcessMessages;

...//数据处理部分

finally
mylabel.Free;
myform.Free;
end;
...
end;

end;
 
WIN32页中有 Animate 控件,用它没错的
 
label1.caption:=...;后加上label1.refresh或refresh或label1.update或update都可
 
label1.caption := recordcount

recordcount 是总记录是不会变的啊
用当前记录就Ok了
 
接受答案了.
 
后退
顶部