您的位置:首页 > 编程语言 > Delphi

Delphi 一个不错的弹出进度条的例子

2010-12-23 10:46 176 查看
//通过调用 BeginWaitProgress UpdateWaitProgress EndWaitProgress这几个方法来实现

procedure IniApp;
begin
BeginWaitProgress(Application.Handle, 10, Application);
try
VQUERCLASS := TQUERYClass.Create;
VGridClass := TGridClass.Create;
VCellClass := TCellClass.Create;
Vfrm_TreeClass := Tfrm_TreeClass.Create;
DM_QUERY := TDM_QUERY.Create(nil);
VTRUNC_ID := CSys;
VDefaultSelectDW := False; //默认的是选中单位树的所有节点
VHorizontalSum := 0; //默认不求合计
VVericalSum := 0; //默认不求合计
VVER_ID := CSys;
VCDSSYSDW := TClientDataSet.Create(nil);
VCDSSYSQJ := TClientDataSet.Create(nil);
VCDSSYSDIM := TClientDataSet.Create(nil);
VCDSSYSDICT := TClientDataSet.Create(nil);
VCDSSYSDICTVAL_Readonly := TClientDataSet.Create(nil);
VCDSURPARAM_Readonly := TClientDataSet.Create(nil);
VCDSSYSBASECOLSET := TClientDataSet.Create(nil);
FCalcOneDWCDS := TClientDataSet.Create(nil);
UpdateWaitProgress(-1);
ReadCDSUR_SYS_DW(VCDSSYSDW);
VCDSSYSQJ.Data := vdm.CDS_UR_TASK_PERD.Data;
UpdateWaitProgress(-1);
ReadCDS_SYS_DIM(VCDSSYSDIM);
UpdateWaitProgress(-1);
ReadCDSUR_SYS_DICT(VCDSSYSDICT);
UpdateWaitProgress(-1);
ReadCDSUR_SYS_DICT_VAL(VCDSSYSDICTVAL_Readonly);
UpdateWaitProgress(-1);
ReadCDSUR_PARAM(VCDSURPARAM_Readonly);
UpdateWaitProgress(-1);
ReadCDSUR_SYS_BASE_COL_SET(VCDSSYSBASECOLSET, '');
UpdateWaitProgress(-1);
RPTCalcOneDwFormula(FCalcOneDWCDS);
UpdateWaitProgress(-1);
AddCDSSYSIDX(DM_QUERY.VCDS_URSYSIDX);
UpdateWaitProgress(-1);
//加载任务数据
ReadCDS_TASK(DM_QUERY.VTaskCDS);
UpdateWaitProgress(-1);
if VCDSSYSQJ.Active and (VCDSSYSQJ.ChangeCount > 0) then
VCDSSYSQJ.MergeChangeLog;
if DebugEnvironment then
begin
VCDSSYSDW.SaveToFile('VCDSSYSDW.xml');
VCDSSYSQJ.SaveToFile('VCDSSYSQJ.xml');
VCDSSYSDIM.SaveToFile('VCDSSYSDIM.xml');
FCalcOneDWCDS.SaveToFile('FCalcOneDWCDS.xml');
VCDSSYSDICTVAL_Readonly.SaveToFile('VCDSSYSDICTVAL_Readonly.xml');
end;
finally
EndWaitProgress(Application.Handle);
end;
end;

procedure BeginWaitProgress(AHandle: THandle;iMaxInt:integer;Comparant: TComponent = nil);
begin
if not Assigned(FrmWaitProgress) then
begin
//Application.CreateForm(TFrmWaitProgress, FrmWaitProgress);
//FrmWaitProgress := TFrmWaitProgress.Create(Comparant);
FrmWaitProgress := TFrmWaitProgress.Create(nil);
end;
EnableWindow(AHandle, false);
FrmWaitProgress.pb1.Max:=iMaxInt;
FrmWaitProgress.Show();
FrmWaitProgress.Update;
end;

procedure EndWaitProgress(AHandle: THandle);
begin
if Assigned(FrmWaitProgress) then
begin
FrmWaitProgress.Close;
FrmWaitProgress.Free;
FrmWaitProgress := nil;
EnableWindow(AHandle, True);
SetActiveWindow(AHandle);
end;
end;

procedure UpdateWaitProgress(iPos:integer);

begin
if Assigned(FrmWaitProgress) then
begin
FrmWaitProgress.Update;
if iPos=-1 then
begin
FrmWaitProgress.pb1.Position:=FrmWaitProgress.pb1.Position+1;
if FrmWaitProgress.pb1.Position>=FrmWaitProgress.pb1.Max then
FrmWaitProgress.pb1.Position:=FrmWaitProgress.pb1.Min;
end
else begin
FrmWaitProgress.pb1.Position:=iPos;
end;
end;
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: