I would like to add or even change an LCL component based on a specific input from a user. Is this possible?
The LCL makes this eminently possible.
Usually the biggest headache is the subsequent adjusting of the the layout of a user-customisable form.
Adding/removing controls that take up much screen space has a major effect on the positioning of remaining/existing controls.
Are you happy for parts of your form to scroll out of view?
Do you want to constrain user-changes to always happen within the normally visible area?
What extent of user-customisation are you prepared to program and maintain?
If the user changes the font/default language/high dpi setting etc., will that mess up the layout irretrievably?
How can the user undo her changes if the needed reset-control is now not in view? etc.
Often the simpler a form is (apparently) to use and customise, the more complex the code engine behind it (not always, of course, but often enough to make you think twice about adding too many customisable features).