unit uViewConfiguracionRegistryUtils;

interface

uses
  Classes, Forms, uClassRegistryUtils;

type
  IViewConfiguracionRegistry = interface (IComponentRegistry)
    ['{F9F580BA-B73E-4073-9AC6-6A63D3D93952}']
    function CreateView(const aClassOrDisplayname: String;
      aOwner: TComponent = nil): TFrame;
  end;

  TViewConfiguracionRegistry = class(TComponentRegistry, IViewConfiguracionRegistry)
  protected
    procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass); override;
    function CreateView( const aClassOrDisplayname: String;
      aOwner: TComponent = nil ): TFrame;
  public
    property Count;  
  end;

var
  ViewConfiguracionRegistry : IViewConfiguracionRegistry;

implementation

{ TViewConfiguracionRegistry }

function TViewConfiguracionRegistry.CreateView(const aClassOrDisplayname: String;
  aOwner: TComponent): TFrame;
begin
  Result := CreateComponent( aClassOrDisplayname, aOwner ) as TFrame;
end;

procedure TViewConfiguracionRegistry.ValidateMinAcceptableClass(
  var aMinAcceptableClass: TClass);
begin
  inherited;
  if not aMinAcceptableClass.InheritsFrom(TFrame) then
    aMinAcceptableClass := TFrame;
end;

initialization
  ViewConfiguracionRegistry := TViewConfiguracionRegistry.Create;

finalization
  ViewConfiguracionRegistry := NIL;
  
end.
