Wie kann ich ein Array von Komponenten erzeugen?


Zuerst das Array deklarieren (hier am Beispiel von TEdit):

Edit : array[1..10] of TEdit;

Wenn man die Komponenten dynamisch erzeugt, kann man es in so einer Schleife machen:

for i := 1 to 10 do begin
    Edit[i] := TEdit.Create(Self);
    Edit[i].Top := 40;
    Edit[i].Height := 21;
    Edit[i].Width := 50;
    Edit[i].Left := 10+50*i;
    Edit[i].Text := 'Edit'+IntToStr(i);
    Edit[i].Parent := Self;       {Unbedingt die übergeordnete Komponente angeben!}
  end;

Wenn man die Komponenten schon auf dem Formular hat, dann kann man sie einfach in einem geeigneten Ereignis (z.B. OnCreate) dem Array zuweisen. Dann darf man sie aber nicht von Hand per TEdit.Create erzeugen, da sie ja schon vom Formular erzeugt wurden.

Edit[1] := Edit1;
Edit[2] := Edit2;
Edit[3] := Edit3;
...
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:

Wieso wird eine zur Laufzeit erzeugte Komponente nicht angezeigt?
Wie kann ich mehrere Komponeten mit derselben Ereignisroutine bearbeiten?
Wie kann ich Komponenten zur Laufzeit über ihren Namen ansprechen?

Erzeugen einer Komponente über .create


Delphi FAQ