Uruchamianie metod obiektów w TObjectList

0

Temat w zasadzie wyjaśnia chyba wszystko.

Tworzę sobie swoją klasę

type
  TKonwerter = class
  private
    Plik: string; 
  public
    procedure setPlik(txt: String);
  end;

Teraz, tworzę sobie TObjectList i wrzucam obiekt klasy TKonwerter

ListaPlikow := TObjectList.Create();
ListaPlikow.Add(TKonwerter.Create());

Jak wywołać metodę setPlik, obiektu na liście o indeksie 0 ?
Myślałem, że:
ListaPlikow.Items[0].setPlik("eee"); ale niestety nie tędy chyba droga

0

A skąd biedne Delphi ma że obiekt na TObjectList ma metodę SetPlik? Trzeba rzutować na odpowiedni typ. U mnie to działa ok.

//...
uses
//...
  Contnrs;
//...
  public
    ListaPlikow : TObjectList;
  end;

type
  TKonwerter = class(TObject)
  private
    Plik : string;
  public
    procedure SetPlik(Txt: String);
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

procedure TKonwerter.SetPlik(Txt : string);
begin
  ShowMessage(Txt);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListaPlikow := TObjectList.Create;
  ListaPlikow.Add(TKonwerter.Create);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TKonwerter(ListaPlikow.Items[0]).SetPlik('A kuku');
end;

Można też tworząc nowy obiekt wykorzystać inną listę - typu TList. Jest to obiekt, który przechowuje WSKAŹNIKI do obiektów.
I wetdy nie trzeba dodawać modułu Contnrs do sekcji uses. Tylko trzeba pamięcać, że operujesz na wskaźnikach do obiektów.

0

Dzięki piękne... Faktycznie, głupie przeoczenie. Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0