Saludos,
Si solo un exemplar de TN1 puede existir,
deja la clase TN1 ser responsable de la existencia de exemplar.
if TN1.IsExemplarCreate then ...
//TN1.UniqueExemplar.DoSomething;
Código Delphi
[-]
type
TN1 = class(TForm)
private
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
class function UniqueExemplar: TN1;
class function IsExemplarCreated: Boolean;
end;
implementation
{$R *.dfm}
var
theUniqueExemplar: TN1;
constructor TN1.Create(AOwner: TComponent);
begin
inherited;
if theUniqueExemplar = nil then
theUniqueExemplar := Self else
raise Exception.Create('Only one exemplar of TN1 is allowed');
end;
destructor TN1.Destroy;
begin
theUniqueExemplar := nil;
inherited;
end;
class function TN1.IsExemplarCreated: Boolean;
begin
Result := Assigned(theUniqueExemplar);
end;
class function TN1.UniqueExemplar: TN1;
begin
if not IsExemplarCreated then TN1.Create(Application);
Result := theUniqueExemplar;
end;
PS Es no buen estilo usar variables globales para
MDI-formularios, porque frequente hay mas que un ejemplar.