Delphi: Как получить доступ к переменной в родительском классе из другого родительского класса? - PullRequest
0 голосов
/ 07 декабря 2011
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 Ответ

1 голос
/ 07 декабря 2011

Вам необходимо обратиться к переменной 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 должен быть где-то правильно инициирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...