51 lines
1.2 KiB
ObjectPascal
51 lines
1.2 KiB
ObjectPascal
unit uViewRegistryUtils;
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, Forms, uClassRegistryUtils, uCustomView;
|
|
|
|
type
|
|
IViewRegistry = interface (IComponentRegistry)
|
|
['{F49AE52F-47EC-42AF-8365-A09270E4B45D}']
|
|
function CreateView(const aClassOrDisplayname: String;
|
|
aOwner: TComponent = nil): TCustomView;
|
|
end;
|
|
|
|
|
|
TViewRegistry = class(TComponentRegistry, IViewRegistry)
|
|
protected
|
|
procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass); override;
|
|
function CreateView( const aClassOrDisplayname: String;
|
|
aOwner: TComponent = nil ): TCustomView;
|
|
end;
|
|
|
|
var
|
|
ViewRegistry : IViewRegistry;
|
|
|
|
implementation
|
|
|
|
{ TViewRegistry }
|
|
|
|
function TViewRegistry.CreateView(const aClassOrDisplayname: String;
|
|
aOwner: TComponent): TCustomView;
|
|
begin
|
|
Result := CreateComponent( aClassOrDisplayname, aOwner ) as TCustomView;
|
|
end;
|
|
|
|
procedure TViewRegistry.ValidateMinAcceptableClass(
|
|
var aMinAcceptableClass: TClass);
|
|
begin
|
|
inherited;
|
|
if not aMinAcceptableClass.InheritsFrom(TCustomView) then
|
|
aMinAcceptableClass := TCustomView;
|
|
end;
|
|
|
|
initialization
|
|
ViewRegistry := TViewRegistry.Create;
|
|
|
|
finalization
|
|
ViewRegistry := NIL;
|
|
|
|
end.
|