With nonvisual components on a TDataModule it is important that the datamodule is created BEFORE the form which uses them.
In many cases I populate most properties of the nonvisual components at runtime. In this case it does not make much sense to put them on the form at designtime at all. Create them at runtime - it's only a single line:
That is part of my problem - I have some non-visual components that refer to components on the main form (e.g. LazReport for StringGrids) so I run into a chcken-egg problem.
In this context it is a good trick to temporarily drop the component on the form and delete it immediately afterwards - this adds the required unit(s) to the uses clause.
Place any non-visual controls that the Form requires into a DataModule that is created before the Form is created.
You can turn off non-visual components altogether by unchecking the option "Show nonvisual components" in the form's context menu.