@taazz
I did it quite exactly the way you describe, intuitively this is the way it should work. But it does not.
Here is an example that I have kept as simple as possible.
A project with just 2 units. In the object inspector, everything looks ok, form2 inherits button1 from form 1. Compiling also seems to work, but as soon as the program starts, it crashes. An empty form1 is painted on the screen (without buttons), then the program stops working and can only be stopped through the debugger halt, or, if the exe file is started without debugger, through the task manager.
In some other constellations (with other unit dependencies), the derived form does not even show the properties of the inherited form in the OI.