Hallo erstmal,
habe eben mal kurz in der
Unit Classes nachgeschaut und folgendes rausgefunden.
Componentcount, Components etc. umfaßt alle Komponenten, welche der Komponente gehören (AOwner). In deinem Fall währe das also das Form.
Hast du jedoch eigene Komponenten geschrieben, welche ein Editfeld als Unterkomponente besitzen, so wird dieses Editfeld nicht bei einem Durchlauf von ComponentCunt des Form mit aufgefaßt da im Constructor der eigenen Komponente etwa soetwas drinsteht.
Delphi-Quellcode:
class TMeineKompo = Class(TPanel)
private
Edi : TEdit;
...
implementation
constructor TMeineKompo.Create(AOwner : TComponent);
begin
inherited;
Edi := TEdit.Create(self); // <--- AOwner ist also TMeineKompo
Edi.Parent:=self // <--- gibt nur an, daß es auf TMeineKompo angezeigt werden soll
...
end;
Aber du kannst sicher sein, alle Komponenten, die du per Drag and Drop oben aus der Leiste auf das Form gezogen hast (auch wenn sie auf einem Panel oder Tabsheet liegen) werden gefunden, da AOwner immer das Form sein wird und nur der Parent auf das Panel bzw. Tabsheet etc. zeigt.
Noch ein Hinweis:
FComponent (private in TComponent) ist ein TListobjekt in dem alle Komponenten eingetragen werden, die diese Komponente besitzt.
Auf FComponent greifen ComponentCount, Components etc zu.
Du solltest dir auch mal den Quelltext von FindComponent anschauen. Es ist auch nur ein Schleife, die alle Namen mit dem String vergleicht. Wenn du also bei allen Felder eines Typs dieselbe Eigenschaft ändern willst, so ist es meines erachtens
nicht besonders Sinnvoll FindComponent zu verwenden.
Gruß danielA