I just checked, that doesn't work either, when setting the Parent of the child (i.e. self), then the application crashes, because the component isn't properly initialized.
If the owner (i.e Tchild.Create(self)) works, then you can move the ".Parent" assignment after the initialized.
Of course that breaks the code into small bits... And I actually do not know if "Create(Self)" is allowed, before "Self" is fully created. (Because it needs the list for all the owned components / Though if that list is created on request / if needed, then it should be ok).
The other way is to check in "Resize".
Seems like csLoading is not set.
It is only set, if someone sets it.
TReader does set it.
You can call Self.Loading to set it.
And then Self.Loaded to clear it.
But if you register your component, and it gets created from LFM, then you may want to check, if it was set before. So you don't interfere with TReader.
Because TReader may defer it until other components have also been loaded. So components can fix up all their relationships.
Not sure, if the docs have anything on the topic....