操作耗时过长的数据库操作(如Backup Database),给用户显示正在数据库操作中,使用以下过程:
procedure TMainForm.ShowProgressBar(const Msg: string);
begin
MsgHint := Msg + '...';
Animate1.Active := True;
Screen.Cursor := crSQLWait;
end;
procedure TMainForm.ClearProgressBar;
begin
FStopProgressStep := True;
MsgHint := '';
Screen.Cursor := crDefault;
Animate1.Active := False;
end;
ShowProgressBar在执行SQL前操作,ClearProgressBar在执行完毕后操作;
但是用户提出希望显示ProgressBar,而不是TAnimate;能够达到进度条如下代码的操作
ProgressBar.Show;
while ProgressBar.Visible do
begin
ProgressBar.StepIt;
Application.ProcessMessages;
Sleep(ProgressBar.Position);
end;
但是试过加入以上代码后,根本就始终循环,跳不出来,请问
1。如何使用线程呢?如果建立ProgrssBarView显示进度的线程。
而我在程序代码中把执行SQL当作主线程中,中间由于可能有提示模态对话框,这样如何仍保持通讯呢?
2。怎样达到TAnimate的效果呢?
procedure TMainForm.ShowProgressBar(const Msg: string);
begin
MsgHint := Msg + '...';
Animate1.Active := True;
Screen.Cursor := crSQLWait;
end;
procedure TMainForm.ClearProgressBar;
begin
FStopProgressStep := True;
MsgHint := '';
Screen.Cursor := crDefault;
Animate1.Active := False;
end;
ShowProgressBar在执行SQL前操作,ClearProgressBar在执行完毕后操作;
但是用户提出希望显示ProgressBar,而不是TAnimate;能够达到进度条如下代码的操作
ProgressBar.Show;
while ProgressBar.Visible do
begin
ProgressBar.StepIt;
Application.ProcessMessages;
Sleep(ProgressBar.Position);
end;
但是试过加入以上代码后,根本就始终循环,跳不出来,请问
1。如何使用线程呢?如果建立ProgrssBarView显示进度的线程。
而我在程序代码中把执行SQL当作主线程中,中间由于可能有提示模态对话框,这样如何仍保持通讯呢?
2。怎样达到TAnimate的效果呢?
procedure DataSetFetchProgress(DataSet: TCustomADODataSet; Progress,MaxProgress: Integer; var EventStatus: TEventStatus);事件函数能够加入代码:
ProgressBar.Show;
while ProgressBar.Visible do
begin
ProgressBar.StepIt;
Application.ProcessMessages;
Sleep(ProgressBar.Position);
end;
但是。
http://www.csdn.net/expert/topic/691/691207.xml