Вы делаете это неправильно. Инициализация одной формы не должна зависеть от существования другой формы. Вы должны сделать одно из трех:
1) (Предпочтительно) Переместить поля из TForm2 в неформальный CLASS, определенный в UNIT, который вы включаете в Form1.PAS и Form2.PAS, и что затем вы создаете из своего TForm1.FormCreate
2) (Только если вы не можете сделать 1) Отложите доступ к полям Form2 до OnActivate Form1 и убедитесь, что OnActivate вызывается только один раз:
PROCEDURE TForm1.OnActivate(Sender : TObject);
BEGIN
OnActivate:=NIL;
<Access Form2.Field>
END;
3) (Только если 1 или 2 невозможно отменить) Создать экземпляр Form2 с FormCreate Form1 (и удалить его из автоматически созданных форм):
PROCEDURE TForm1.FormCreate(Sender : TObject);
BEGIN
Application.CreateForm(Form2,TForm2); // Or Form2:=TForm2.Create(Application);
<Access Form2.Field>
END;
Из этих трех вариантов 1) является абсолютно предпочтительным. ..