Zitat von
IngoD7:
Wichtig für sein Problem ist nur, dass die Eigenschaft Parent direkt beim Erzeugen belegt wird. Mehr wollte ich nicht ausdrücken.
Das ist aber so falsch!
Das Problem (das Du nach eigener Aussage nicht verstehst) für das Du hier eine Lösung anbietest ist nicht das, das der Thread-Steller hat. Wie vorhin schon gesagt wurde, wird ein Fenster in der Hierachie der Parents benötigt. Probier es einfach mal aus, erstell Dir dyn. eine Combobox (mit einem Parent), wobei weder die Combobox noch die Parent-Komponente der Combobox auf einer Form liegen. Das geht ohne Probleme, dann greif auf die Items Eigenschaft der Combobox schreibend zu. Genau darin liegt das Problem, das geht nicht (ohne Fehler).
Das eigentliche Problem ist und bleibt also, woher weiß man, wann der Parent der Komponente sich ändert. Sagen wir mal die Combobox wird zuerst auf Panel1 gesetzt, Panel1 hat noch keinen Parent, das kann die Combobox ohne Probleme feststellen. Wie merkt sie aber jetzt, das Panel1 auf Panel2 gelegt wurde? Schließlich darf sie erst gefüllt werden, wenn sich über die Parent-Eigenschaft eine Form erreichen lässt (also auch rekursiv mittels if Combo.Parent.Parent is TForm). Und genau das muss man irgendwie wissen, wenn es eine allgemeine Komponente ist, die man z.B. vermarkten möchte.
Würde ich eine solche Komponente kaufen, die hier feste Werte in der Combobox stehen hat (was weiß ich, vielleicht Monate), dann möchte ich nicht nach dem platzieren auf einer Form nochmal die Funktion "füllen" aufrufen, damit da auch was drinsteht. Ich würde dann gerne die Möglichkeit haben, die einfach auf einem beliebigen Parent zu platzieren und fertig (z.B. auch dyn.).
Und für das Problem sehe ich hier keine Lösung (mag auch sein, dass es für den Threadsteller möglich ist, diese Methode aufzurufen, aber das eigenltiche Problem wäre ebend nicht gelöst).