zoukankan      html  css  js  c++  java
  • 用idhttp打开网页或下载文件时如何显示进度

    在它的workbegin work事件中写代码

    procedure TfrmDownLoad.IdHTTP1WorkBegin(Sender: TObject;
       AWorkMode: TWorkMode; const AWorkCountMax: Integer);
    begin
       ProgressBar1.Max := AWorkCountMax ;
    end;

    procedure TfrmDownLoad.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
       const AWorkCount: Integer);
    begin
       ProgressBar1.Position := AWorkCount ;
    end;

    显示下载速度
    idhttp有一个方法就是OnWork,有一个参数AWorkCount,就是当前下载的大小(K)
    用一个全局变量记录时间
    在onWorkBegin的时候取一下时间
    然后在OnWorK里再取一下时间,做差得到下载用的时间,然后用下载的大小除以时间就是下载的速度
    全局变量:lastc,lastt

    procedure
     TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
    begin
       nsize.Caption := '已下载:'+floattostr(ByteToStr(AWorkCount))+'MB';
       speeds.Caption := '下载速度:'+floattostr((AWorkCount-lastc)*3600*24/(lastt-now)))+'kb/s';
       ProgressBar1.Position:=AWorkCount;
       lastc:=AWorkCount; //用ProgressBar1.Position做lastc也可以
       lastt:=now;
    end;

  • 相关阅读:
    22 有序化模块
    21模块
    Day20 继承
    Day19 约束
    面向对象 成员
    面向对象01
    内置函数、匿名函数、递归、二分法
    生成器函数 推导式
    Unity3D 实现方块跑酷
    day30-2018-12-3-进程
  • 原文地址:https://www.cnblogs.com/wissly/p/3446723.html
Copyright © 2011-2022 走看看