Нет, единица не эквивалентна форме.
Единица - это модуль, который содержит часть вашей программы. Каждая форма является отдельной единицей, но единица не должна содержать форму.
Каждый блок имеет раздел интерфейса и раздел реализации. Объявления в разделе интерфейса видны всем устройствам, которые используют устройство:
unit A;
interface
type
TMyClass = class
end;
implementation
end.
unit B;
interface
uses
A; // I can now see and use TMyClass.
Вы можете объявить глобальные переменные, объявив их в единицах:
unit A;
interface
var
GVar1 : Integer;
implementation
var
GVar2 : Integer;
end.
GVar1 виден и может быть изменен всеми модулями, использующими модуль A. GVar2 виден только кодом модуля A, поскольку он определен в разделе реализации.
Я настоятельно рекомендую не использовать глобальные переменные в разделе интерфейса, потому что вы не можете их контролировать (потому что каждый может их изменить). Если вам действительно нужен глобальный объект, вам лучше определить его в разделе реализаций и предоставить функции доступа.
Кстати, вы можете рассматривать юнит как своего рода класс (с одним экземпляром). У него даже есть способ построить и разрушить:
unit A;
interface
type
TMyClass = class
end;
implementation
initialization
// Initialize the unit
finalization
// Free resources etc. You can olny have a finalization if you have an initialization.
end.