Ver Mensaje Individual
  #8  
Antiguo 13-10-2005
rounin rounin is offline
Miembro
 
Registrado: sep 2005
Posts: 43
Reputación: 0
rounin Va por buen camino
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
    { Private declarations }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    class function UniqueExemplar: TN1;
    class function IsExemplarCreated: Boolean;
  end;
 
//var
// N1: TN1;
 
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 {theUniqueExemplar := } TN1.Create(Application);
  Result := theUniqueExemplar;
end;

PS Es no buen estilo usar variables globales para
MDI-formularios, porque frequente hay mas que un ejemplar.

Última edición por rounin fecha: 13-10-2005 a las 14:00:37.
Responder Con Cita