Delphi:如何从另一个父类访问Parent类中的变量?

时间:2011-12-06 22:49:32

标签: delphi scope

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdTCPClient;

type
  TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
  public
    Flist : TList;
    property list : TList read Flist write Flist;
  end;

  Tmy_class = class(TThread)
    public
    procedure test;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure Tmy_class.test;
begin
  // Error here, can't access the Flist var or list propertie, help !! How to access?
  TForm1(TList).list.Clear;

  // Error
  Form1.list.Clear;

  // Error
  Form1.Flist.clear;

  // HOW ????????
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Flist := FList.Create;
end;

end.

如何访问" Flist"变量? 感谢。

Delphi 2010,Indy 10,Win7

是的,那就是把我解救出来: 你的帖子没有太多的上下文来解释代码部分;请更清楚地解释您的情景。

1 个答案:

答案 0 :(得分:1)

您需要解决变量Form1。

Form1.list.clear;

但是从线程中执行此操作并不安全。

更新:编译好。

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
 private
    { Private declarations }
    FList : TList;
  public
    { Public declarations }
    property List : TList read FList;
  end;

Type TMyClass = class(TThread)
  Public
    PROCEDURE Test;
end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FList:= TList.Create;  // Look here how to create the list
end;

{ TMyClass }

procedure TMyClass.Test;
begin
  Form1.List.Clear;
end;

end.

但正如我之前所警告的那样,直接从线程中使用List并不是一个好主意。

另请参阅评论如何创建列表。

是的,TMyClass必须在某处正确启动。