Um die Hierarchie der Komponenten anzeigen zu lassen kannst Du folgendes verwenden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.ShowComponents (C:TComponent); var i:integer; begin memo1.lines.add (C.Name+' hat folgende Unterkomponenten:'); for i:=0 to C.componentcount-1 do memo1.lines.add (C.components[i].Name); for i:=0 to C.componentcount-1 do if C.Components[i].ComponentCount > 0 then ShowComponents(C.components[i]); end;
procedure TForm1.Button4Click(Sender: TObject); begin Memo1.lines.clear; ShowComponents (self); end; |
(ShowComponents noch im Type-Bereich der Form definieren, Memo1 und Button 4 zu Testzwecken aufs Formula packen).
Das mit den Farben in meinem Posting vorher bezog sich darauf daß ich im Quelltext etwas farblich markieren wollte, was aber innerhalb der delphi-Tags nicht ging, daher hab ichs editiert.
Zur Logik von Owner und Parent - warum erhalten Komponenten von der IDE als Parent immer das Formular?
Das Formular mit allen Komponenten wird über das Streaming-System gespeichert.
Soll es aufgebaut werden müssen alle Komponenten in ein vorhandenes Parent gepackt werden. Und davon gibt es während des Einlesens aus dem Stream eben nur das Formular selbst da die Reihenfolge der Unterkomponenten nicht festliegt (eine Checkbox in einem Panel kann auftauchen bevor das Panel eingelesen wurde)
Evtl. gibt es noch mehr Gründe.