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;
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;
相关文章推荐
- Delphi 一个不错的弹出进度条的例子
- Delphi 一个不错的弹出进度条的例子
- 一个不错的验证码的例子
- 一个删除重复数据不错的例子
- c#中子线程控制进度条的一个简单例子
- 不错的一个例子
- JQuery插件-Layui弹出层的一个例子
- DELPHI中控制EXCEL的一个例子
- 推荐一个不错的html5例子导学网站
- 【一个不错的oracle数据库诊断例子,值得学习一下】Oracle数据库诊断案例-redo log日志组处于高激活状态
- 一个不错的JDBC连接池教程(带具体例子)
- 【转】js弹出登录层的一个例子
- 一个简单的div弹出层的小例子
- Flex中如何利用键盘关闭(Esc)一个弹出窗口的例子
- 一个不错的进度条样式
- C#中子线程控制进度条的一个简单例子
- c#中子线程控制进度条的一个简单例子
- 非常不错的弹出一个div的js代码
- Winform中使用进度条的一个例子
- 一个不错的log4j.properties例子