如何用进度条表示当前操作的进度?(100分)

  • 主题发起人 seven_918
  • 开始时间
S

seven_918

Unregistered / Unconfirmed
GUEST, unregistred user!
有一些操作需要一定的时间,但是又不能确切的知道其完成的进度,比如服务器的连接,
数据库的备份、恢复等。我想在做这些操作的时候显示一个进度条来告诉用户当前操作完
成的进度,应该怎么办呢?望各位指教!!!谢先!!!
 
如果没有确定时间。数据库备份可以按表计算。连服务器就告经验时间了。
 
知道总进度的情况下可以这样,不知道总进度的情况我再看看
procedure TForm1.ProcedureName;
var
tmpMaxValue : integer;
tmpfrmGauge : TFrmGauge;
begin
tmpfrmGauge := TFrmGauge.Create(Application);
try
with Table1 do
begin
tmpMaxValue := 0;
while Not Eof do
begin
Inc(tmpMaxValue);
Next;
end;
tmpfrmGauge.Show;
tmpfrmGauge.Refresh;
tmpfrmGauge.GaugeProg.MaxValue := tmpMaxValue;
tmpMaxValue := 0;
first;
while not eof do
begin
Table2.Append;
begin
Table2.Fieldbyname('ColumnName1').asinteger := Fieldbyname('ColumnName1').asinteger;
end;
try
Table2.Post;
except
Table2.Cancel;
end;
Inc(tmpMaxValue);
tmpfrmGauge.GaugeProg.Progress := tmpMaxValue;
tmpfrmGauge.Refresh;
next;
end;
end;
finally
if tmpfrmGauge <> nil then tmpfrmGauge.Free;
end;
end;
 
怎么没有人来指点啦!
 
随着进度改变ProgressBar.Position
问题是你不给出具体的代码,没法说!
 
自己计算大概时间,用timer实现
 
一些操作可以用回调函数,在里面处理进度。
 
用进程条表示,关键在于计算任务的“长度”或其估计值!!!
 
用多线程
 
能不能给出个源代码,我很菜的!
比如我有这样一个操作(数据库是SQL SERVER)
with query1 do
begin
if active then active := false;
sql.clear;
sql.add('restore database temp from disk=''d:/backup/temp.bak''');
execsql;
end;
我要在这个操作开始的时候显示进度条,当这个操作结束的时候进度条完成。
如果自己估计时间的话,由于运行环境、数据库大小等因素,不好估计;用多线程又该怎样
写代码呢?
 
呵呵,我比较菜,也想个比较菜的办法,因为这只是一个界面美化的问题,它只是为了告诉
别人‘本程序正在运行,并且死机’,所以,你可以用类Win2000启动时的方法,只是一个
蓝条在下面动,什么时候做完,什么时候关就行了。至于那个蓝条,只是一个AVI动画,下载
一个或用Flash高手做一个就OK了!
 
在循環中要加入 application.messageprocess()
 
那里有什么 application.messageprocess?
application.processMessages倒是有,:)
这样答问题,太随手了吧
而且这个对sql查询没用的
 
这个问题我也想过了,你是对文件操作。
这需要有关流操作。具体我也不太清楚。顺便问一下flash控件的movie属性一定要绝对路径
能用相对路径吗,怎么搞
 
不要在别人地盘上发问吧,会干扰的哦。
用全局变量存路径前面相同部分,再和相对路径
合成给movie的绝对路径。
 
to:stlont
“用全局变量存路径前面相同部分,再和相对路径”
什么意思,具体一点吧
谢谢了
我想到办法了:
extractfilepath(application.exename)+'###.swf';
 
顶部