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
是的,那就是把我解救出来: 你的帖子没有太多的上下文来解释代码部分;请更清楚地解释您的情景。
答案 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必须在某处正确启动。