By the way, since TControl and its descendants have many published properties, what is the minimum set of indispensable properties that in a component must be published for its basic correct functioning?
Define "functioning".
(Usually) All properties work never mind if they are published. "work" means, that if you set them in code, they will behave.
For the purpose of this thread, you need published if
- you want to see the property in the object inspector (not accounting for custom prop edits (like the anchor edit))
- safe them to lfm
So, if your components needs to have a value set at design time, and needs to store it in the lfm, then for that component to function, that property must be published.
Or it must be handled by overriding the method that allows to stream extra fields.
"Usually" / "purpose of this thread":
There are other uses, such as streaming for database/orm or streaming for REST or other transfer/storage formats.
Also various other RTTI based implementations.