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

//通过调用 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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
与大家分享一个Delphi 7自定义单元,完成自定义消息和自定义进度条的显示,效果可参见截图所示。在源代码中,showmessage是弹出消息提示窗口,showprogress是显示进度条,为了更好的看到效果,本示例显示进度条正在运行的状态,进度条弹出消息框,作者:周劲羽   该单元提供以下几个过程用于显示动态提示窗体:   ShowProgress - 显示进度条窗体   HideProgress - 隐藏进度条窗体   UpdateProgress - 更新当前进度   UpdateProgressTitle - 更新窗体标题   使用方法:在需要显示提示窗口的单元中uses本单元,当需要显示提示信息时直接调用ShowXXXX过程即可。   注意事项:同一时间屏幕上只能显示一个进度窗体,窗体显示时其它所有窗体均不能使用,但显示该窗体的代码仍可以继续运行。   来看一下参数如何定义:   procedure ShowProgress(const Title: string; AMax: Integer = 100; vIsShowProgress: Boolean = false);   {* 显示进度条窗体,参数为窗体标题以及最大值,默认 100(百分比形式),可自定义成其他值}   procedure HideProgress;   {* 关闭进度条窗体}   procedure UpdateProgress(Value: Integer);   {* 更新当前进度,参数为进度值:当 Max 为 100 时可接受范围为 0..100,此时 Value 代表百分比}   procedure UpdateProgressTitle(const Title: string);   {* 更新进度条窗体标题,参数为标题}   procedure UpdateProgressMax(Value: Integer);   {* 更新进度条最大值,参数为新的最大值}   implementation   {$R *.DFM}   var    ProgressForm: TProgressForm = nil; // 进度条窗体实例    FormList: Pointer; // 被禁用的窗体列表指针   详细的单元使用方法,请下载查看源码中的代码文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值