Я бы подумал, что гораздо лучше даже не создавать форму. Если вы выполняете некоторую логику, которая определяет, что форма даже не нужна, и эта логика содержит состояние, которое важно для формы, затем повторно раскладьте логику в отдельный объект (или даже модуль данных) и передайте объект к форме как собственность. Вот простой пример (с использованием объектного подхода):
UNIT1
type
TOFormTests = class
fStateData : string;
public
function IsForm1Needed( someparam : string) : boolean;
property StateData : string read fStateData write fStateData;
end;
UNIT2
uses
:
UNIT1;
type
TForm1 = class(tForm)
:
procedure SetFormTests(value : tOFormTests);
property FormTests : TOFormTests read fFormTests write SetFormTests;
end;
procedure SetFormTest(Value:TOFOrmTests);
begin
fFormTests := Value;
// perform gui setup logic here.
end;
затем где-нибудь в вашем коде, где вы хотите определить, следует ли вам показывать свой графический интерфейс или не использовать что-то вроде следующего:
var
Tests : TOFormTests;
begin
tests := tOFormTests.create;
try
if Tests.IsForm1Needed('state data goes here') then
begin
Form1 := tForm1.create(nil);
try
Form1.FormTests := Tests;
if Form1.ShowModal = mrOk then
// handle any save state logic here.
;
finally
FreeAndNil(Form1);
end;
end;
finally
freeAndNil(Tests);
end;
end;
Это также предполагает, что форма НЕ находится в списке автоматического создания и должна отображаться модально.