Könnte man dann nicht gleich über Controls iterieren? Nicht-visuelle Komponenten müssen ja nicht beschriftet werden. Außerdem ist TControl.Caption IIRC protected und wird in abgeleiteten Klassen dann zu Caption oder zu Text, man bräuchte also entweder eine Unterscheidung, was sehr umfangreich werden könnte, oder ein wenig
RTTI.