读书人

请问自定义类引用的方法

发布时间: 2012-10-29 10:03:53 作者: rapoo

请教自定义类引用的方法
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.
探讨
ProgressbarName:=ProgressbarXz;

[解决办法]
var
ProgressbarXz:TProgressBar;
这个不用定义

procedure JsXzPro(XzName,BdName:string;ProgressbarName:TProgressBar);
直接使用ProgressbarName就行了

读书人网 >.NET

热点推荐