If you write your own component, and you want to creat stuff based on properties...
You can override the procedure "Loaded", at that time all properties are set, and you can create your subcomponents.
BUT, if your component isn't loaded (e.g. if you drop it onto the form in the designer), then "Loaded" is never called... So nothing happens.
Hence you can in the constructor test for
if not(csLoading in AOwner.ComponentState) then
CreateDefaults
You can also use that test in the property setters. So during loading property setters can skip chnaging the component (since Loaded will take care), but if a property changes outside the loading, it can change the subcomponents as required.
It get's more complex, if you want the subcomponents to have published properties, that can be edited, and streamed.
SynEdit and SynGutter do that. SynGutter can have any amount and combinations of Gutterparts, which are all edit-able through the designer, and all streamed to the lfm file, and loaded at runtime.