delphi 进度条

-Tracy-McGrady- 2012-09-18 11:21:33
我从本地机器上向远程服务器导入csv文件,由于使用ado结合query,文件较大,导入速度较慢,我想制作一个进度条用以向用户显示当前的导入进度,请问要怎么样用delphi制作这个进度条。(当我点击“导入”按钮时,可以弹出新的窗体也可以是在当前窗体显示进度也可以),有没有具体的代码示范,谢谢。
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
-Tracy-McGrady- 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

Delphi(Pascal) code
拉一下ProgressBar控件下來,改这个地方:

ProgressBar1.Max:=ADOQ_dr.RecordCount;
while not ADOQ_dr.Eof do
begin
ProgressBar1.Position:=ProgressBar1.Position+1;
...
[/Quote]
谢谢你,我弄出来了。
-Tracy-McGrady- 2012-09-19
  • 打赏
  • 举报
回复
我有两个while not ADOQ_dr.Eof do,因为我导入了两个csv文件,但我只想总共显示一条进度条。
kaikai_kk 2012-09-19
  • 打赏
  • 举报
回复
拉一下ProgressBar控件下來,改这个地方:

ProgressBar1.Max:=ADOQ_dr.RecordCount;
while not ADOQ_dr.Eof do
begin
ProgressBar1.Position:=ProgressBar1.Position+1;
...
-Tracy-McGrady- 2012-09-19
  • 打赏
  • 举报
回复
我的导入语句是这样写的,但我没用过进度条,不会用。

while not ADOQ_dr.Eof do
begin
sqlStr1:='insert into '+tmpTbName1+'(ysdbh,ysdmc,ysdje,cgjgmc,zdr,zdsj,wtgyy,bz,zt,dyl) values (';
for i:= 0 to ADOQ_dr.Fields.Count- 1 do
begin
if ADOQ_dr.Fields[i].Value<>null then
tbData1:=ADOQ_dr.Fields[i].Value
else tbData1:='';
sqlStr1:=sqlStr1+''''+tbData1+''''+',';
end;
delete(sqlStr1,length(sqlStr1),1);
sqlStr1:=sqlStr1+')';
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(sqlStr1);
try
Query1.ExecSQL;
except
application.MessageBox('数据导入失败(错误:4)!','信息提示',mb_ok);
exit;
end;
ADOQ_dr.Next;
end;
kaikai_kk 2012-09-19
  • 打赏
  • 举报
回复
如果是数据导入用ProgressBar,先统计总记录数,在导入按扭,每导入1笔数据让Position+1,即
ProgressBar1.Max:=总记录数;
ProgressBar1.Position:=ProgressBar1.Position+1;

如果是拷贝文件,用Animate
Animate1.CommonAVI:=aviCopyFiles;
Animate1.Active:=True;
bdmh 2012-09-19
  • 打赏
  • 举报
回复
首先你知道有多少条数据,然后逐条insert或其他,这样不就可以知道进度了吗
babydog01 2012-09-19
  • 打赏
  • 举报
回复
说得详细一点或把你的导入语句贴出来。
如果是一条一条记录导入可用记录数做进度条。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧