Der Sprung ist nicht wirklich in das
Controls.DisplayButton(TClsButtonInfo(oButton));
, sondern ins "implizite" Ende der Schleife (
end;
) und da es kein End gibt, wird die Position halt in der Zeile des vorhergehenden Befehls angezeigt.
Delphi-Quellcode:
for oButton in goProgBar do
begin
if oButton is TClsButtonInfo then
begin
Controls.DisplayButton( TClsButtonInfo( oButton ) );
end;
end;
Denn der Code für die For-Schleife befindet sich nicht nur am Anfang der Schleife, sondern auch teilweise danach.
Zitat:
Dann ist halt kein Button der Klasse TClsButtonInfo in der Komponentenliste.
For-In bei einem TComponent durchläuft alle "Components", also die Ownerbeziehungen, da hierfür ein entsprechender "Enumerator" implementiert wurde.
Wenn der Button über den FormDesigner erstellt und aus der
DFM geladen wurde, dann ist sein Owner "immer" die Form.
Die Beziehungen was wo dargestellt wird, werden aber über den Parent und nicht über den Owner geregelt.
Will man was Anderes per For-In durchlaufen, dann braucht man einen anderen und eventuell selbst erstellten Enumerator.