With nonvisual components on a TDataModule it is important that the datamodule is created BEFORE the form which uses them. Go to the project options, section "Forms", and move the datamodule to the top of the "Auto-create forms". I do this regularly with imagelists shared between several forms. See also the lpr project file:
begin
RequireDerivedFormResource:=True;
Application.Title:='project1';
Application.Scaled:=True;
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1); // <--- Must be BEFORE Form1
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
You can turn off non-visual components altogether by unchecking the option "Show nonvisual components" in the form's context menu. Then you can find the non-visual components only in the object tree above the object inspector.
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:
SaveDialog1 := TSaveDialog.Create(self);
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.