TActionList有个标准动作TDownLoadURL,内部是使用的URLDownloadToFile,它下载文件时会定时产生OnDownloadProgress 事件,这样就可以用进度条显示:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtActns, ActnList, StdCtrls, ComCtrls; type TForm1 = class(TForm) Button1: TButton; ActionList1: TActionList; ProgressBar1: TProgressBar; procedure Button1Click(Sender: TObject); private { Private declarations } procedure URL_OnDownloadProgress (Sender: TDownLoadURL; Progress, ProgressMax: Cardinal; StatusCode: TURLDownloadStatus; StatusText: String; var Cancel: Boolean) ; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure Tform1.URL_OnDownloadProgress; begin ProgressBar1.Max:= ProgressMax; ProgressBar1.Position:= Progress; end; procedure TForm1.Button1Click(Sender: TObject); begin with TDownloadURL.Create(self) do try URL:='http://static.cnblogs.com/images/logo_small.gif'; FileName := 'logo.jpg'; OnDownloadProgress := URL_OnDownloadProgress; ExecuteTarget(nil) ; finally Free; end; showMessage('OK'); ProgressBar1.Max := 0; end;