多线程当中创建非可视控件怎么关联继承控件事件

多线程当中创建非可视控件如何关联继承控件事件
讨论一个问题各位
比如:
我们在form中放置一个非可视的控件,idhttp。

然后我们在idhttp控件的OnStatus事件双击,系统会自动生成事件处理程序的框架比如下面这个:
procedure   TForm1.IdHTTP1Status(ASender:   TObject;   const   AStatus:   TIdStatus;
    const   AStatusText:   String);
begin
        statuspanel1.Caption:=astatustext;
end;
看清楚了
这里有一个过程当中的变量astatustext是系统自动生成的。

我们要作的事情很简单,就是直接在事件处理过程中,获取这个参数,然后赋值给status,这样就可以达到,实时地显示idhttp控件的工作状态。比如正在连接,完成连接这样~!

上面说的那么多,是想请教一下。

这样的情形,当我们放到多线程单元中的时候。

我们用idhttp1:=TIdhttp.create(nil);

这样的代码创建一个idhttp出来。

那么这时候,我们要处理它的onstatus事件。就不行了…………
我们可以手动设置
idhttp1.onstatus:=事件处理过程;
但是这个事件处理过程,无法截取到status状态。
也就是说,它根本无法继承父类的那个参数:astatustext
~~!
我表达的还清楚吧?大家有兴趣可以帮忙看看

模拟一个多线程单元的代码,应该可以更容易理解问题
————————————————————————————————————
unit   Unit3;

interface

uses
    Classes,dialogs,idhttp;

type
    test   =   class(TThread)
    private
        tmp:string;
        idhttp1:tidhttp;
    protected
        procedure   Execute;   override;
        procedure   showstatus;
    public
    constructor   create(i:string);
    end;

implementation


constructor   test.create(i:string);
begin
    tmp:=i;
    inherited   create(false);
end;

procedure   test.Execute;

begin
    idhttp1:=Tidhttp.Create(nil);
    idhttp1.Get( 'http://www.baidu.com/ ');
    //这里就郁闷了,需要手动设置idhttp1的onstatus处理事件。那到底应该放在idhttp的get之前还是get之后呢?
    idhttp1.OnStatus:=showstatus;
end;

procedure   test.showstatus;
begin
    //然后这里事件处理应该怎么写才可以??难道模仿我们添加idhttp控件在form那样?
    //我试过了,把这个过程声名成下面这样,根本没有用
    //因为我们这样声名的过程里面的参数AStatusText根本无法识别。也就是没有内容。
    {procedure   TForm1.IdHTTP1Status(ASender:   TObject;   const   AStatus:   TIdStatus;
    const   AStatusText:   String);
begin
        bsskinstatuspanel1.Caption:=astatustext;
end;}


end;


end.
——————————————————————————————————————


------解决方案--------------------
//妖哥,偶是Turbo Delphi
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, idhttp, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, StdCtrls;

type
TForm1 = class(TForm)
IdHTTP2: TIdHTTP;
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

test = class(TThread)
private
tmp:string;
idhttp1:tidhttp;
protected
procedure Execute; override;
procedure IdHTTP1Status(axSender: TObject;
const axStatus: TIdStatus; const asStatusText: String);
public
constructor create(i:string);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

constructor test.create(i:string);
begin