请教自定义类引用的方法
1、我写了一个自定义类,里面uses了idhttp,Progressbar单元,写了一个下载的过程,没有窗体,只有pas。代码见下面
2、我想在form1中调用这个过程,关键用我需要在form1窗体上的Progressbar1显示出下载进度,但下面的写法却没有效果。请高手指点如何调用。
我调用的写法是:JsXzPro('http://www.ab1.com/1111.rar','C:\1.rar',ProgressBar1);
- Delphi(Pascal) code
var ProgressbarXz:TProgressBar;procedure JsXzPro(XzName,BdName:string;ProgressbarName:TProgressBar);var MyStream:TMemoryStream; idhttp1:TIdhttp;begin MyStream:=TMemoryStream.Create; idhttp1:=TIdhttp.Create(nil); ProgressbarXz:=TProgressBar.Create(nil); ProgressbarName:=ProgressbarXz;//想将自定义类中的ProgressbarXz进度传递到调用过程窗体上的Progressbar1上。 try IdHTTP1.Get(XzName,MyStream); except Showmessage('下载失败!'); MyStream.Free; Exit; end; MyStream.SaveToFile(BdName); idhttp1.Free; MyStream.Free; Showmessage('下载完成!');end;//下面的写法模拟正常写法procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); var ProgressbarXz:TProgressBar;begin with ProgressbarXz do begin Max:=AWorkCountMax; Min:=0; Position:=0; end;end;procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); var ProgressbarXz:TProgressBar;begin ProgressbarXz.Position:=AWorkCount;end;[解决办法]
1.你这不叫自定义类中的ProgressbarXz,这叫自定义单元文件中的progressBarXz。。
2.
[解决办法]
var
ProgressbarXz:TProgressBar;
这个不用定义
procedure JsXzPro(XzName,BdName:string;ProgressbarName:TProgressBar);
直接使用ProgressbarName就行了