Moin Lillebrohr,
dann will ich's mal versuchen näher zu erklären:
Mit FindComponent kannst Du, wie der Name schon vermuten lässt Komponenten finden, die einer anderen Komponente untergeordnet sind.
Wenn Du z.b. ein Formular Form1 hast, und darauf zwei Button (Button1 und Button2), kannst Du diese auch finden, indem Du
Form1.FindComponent('Button1');
verwendest.
Da FindComponent, für den Fall, dass die gesuchte Komponente gefunden wurde einen Zeiger auf die Kompo zurückliefert, kannst Du sie auch zwischenspeichern
Delphi-Quellcode:
var
btnDyn : TButton;
begin
btnDyn := Form1.FindComponent('Button1') as TButton;
if Assigned(btnDyn) then begin
// nur falls der Button auch gefunden wurde kann damit weitergearbeitet werden
end;
end;
und anschliessend mit btnDyn alles verwenden, was Du auch direkt mit Button1 hättest machen können.
In der Regel sucht man natürlich nach dynamisch erzeugten Komponenten, deshalb ist es wichtig, diesen beim Erzeugen auch (eindeutige!) Namen zu geben, damit man sie wiederfinden kann. (Es gäbe zwar auch einen Weg dies mit unbenannten Controls zu machen, aber das würde hier jetzt wohl zu weit führen).
Würde der Button jetzt aber z.B. auf einem Panel (Panel1) liegen, welches wiederum auf dem Formular liegt, könnte es auf diesem Wege nicht gefunden werden, da es diesem nicht untergeordnet ist.
Um den Button nun auf dem Panel zu suchen müsste man
btnDyn := Panel1.FindComponent('Button1') as TButton;
schreiben.
Welcher Komponente als übergeordnete gilt, wird durch die Eigenschaft Parent festgelegt.
Wird Parent geändert, ändert sich auch die Position.
Liegt der Button z.B. links oben auf dem Panel, und die Eigenschaft Parent wird auf Form1 geändert, findet man den Button anschliessend links oben auf dem Formular wieder.