Yes.
As I implied in the OP I don't really understand how the relationship between forms and units is maintained.
a Unit can have multiple forms or classes in it it is customary to use one form per unit to keep things clean and easier to understand.
With designtime form implementation, the Form type is declared as a Class(TForm) and the designed form variable may defined as Form1: TForm1. All procedures and functions relating to the form are defined under FormB so that a procedure may be declared:
procedure setPaths;
and implemented:
procedure TForm1.setPaths;
begin
...
end;
However, if I'm just using a PAS file as a unit to contain some functions and procedures and global variables, I generally don't define a class(TForm) type so that my procedures are defined (as above):
procedure setPaths;
but implemented:
procedure setPaths; (without the TForm1. prepended)
begin
...
end;
This is what I'm seeking to clarify, particularly in regard to Forms which are constructed at runtime.
to put it as simple as I can a class is a unit that has not be loaded or initialized yet. you load and initialize that unit by calling its constructor the Create method. The constructor allocates enough memory to hold the classes variables and initializes them to a certain value if you do not write code to give them specific values then their memory usually is filled with 0s.
You can have as many of those classes loaded as you like each with different data in their variables showing different things on the same or different layout.
A variable be it form1 or formB or what ever you want to call it is a pointer data type that holds the memory address where the class has been initialized.
a design time form is a form that you used the IDE designer to place controls on it and set specific values to their properties all those changes are saved in the .lfm file which is read at run time to recreate the environment you defined at design time. This means that when you design a form you simply select what are the initialization values for those controls when the form is created and by writing code on the controls events you decide how those controls should react.
The form in its final state after you have finished working with it can be considered a compound control a single controls that handles a more complex logic than a simple Tedit for example, you can create as many of those as you might need and have them represent different views. An easy to understand example is, a form that can be used to edit the data of a customer in a database, you can have multiple forms created that can edit different customers each but you design that form once for all the customers.
Using a single unit with its global variables and procedures do not allow you to have different views at the same time you are confined to one and only one view at each single moment you can change to represent an other view but the moment you do that you loose the old view's data that is a big limitation don't you think?