不兼容的类型:'TDownloadProgressEvent'和'Procedure'

时间:2012-07-09 17:36:33

标签: delphi download progress-bar

我正在尝试下载文件,同时状态显示在进度条中。

我按照此处的说明操作: http://delphi.about.com/cs/adptips2003/a/bltip0903_2.htm

这是我的代码:

unit unitUpdate;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, StdCtrls, ComCtrls, ExtActns;

type
  TForm5 = class(TForm)
    ProgressBar1: TProgressBar;
    SaveDialog1: TSaveDialog;
  private
    procedure URL_OnDownloadProgress
        (Sender: TDownLoadURL;
         Progress, ProgressMax: Cardinal;
         StatusCode: TURLDownloadStatus;
         StatusText: String; var Cancel: Boolean) ;
         function DoDownload: boolean;
  public
    { Public declarations }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.URL_OnDownloadProgress;
begin
   ProgressBar1.Max:= ProgressMax;
   ProgressBar1.Position:= Progress;
end;

function TForm5.DoDownload: Boolean;
begin
  ShowMessage('A new update is available!');
  savedialog1.Title := 'Save Update';
  savedialog1.Filter := 'Exe Files (*.exe)|*.exe';
  savedialog1.Execute;
  if savedialog1.filename = '' then
    Application.Terminate
  else begin
   with TDownloadURL.Create(self) do
   try
     URL:='linktofile';
     FileName := savedialog1.FileName + '.exe';
     OnDownloadProgress := TForm5.URL_OnDownloadProgress;

     ExecuteTarget(nil) ;
   finally
     Free;
   end;
  end;
end;

end.

编译后,我收到以下错误:

[DCC Error] unitUpdate.pas(50): E2010 Incompatible types: 'TDownloadProgressEvent' and 'Procedure'

这是指这行代码:

OnDownloadProgress := TForm5.URL_OnDownloadProgress;

我无法修复此错误.. 任何帮助将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:5)

TForm5.URL_OnDownloadProgress不是一个有效的句子,你必须使用形式的实例(而不是tyoe),所以尝试写这样的东西

 OnDownloadProgress := Self.URL_OnDownloadProgress;

 OnDownloadProgress := URL_OnDownloadProgress;

答案 1 :(得分:2)

删除TForm5:

OnDownloadProgress := URL_OnDownloadProgress