I have some Frames registrated like:
GlobalContainer.RegisterType<TfraBasePage, TfraSetting>(IDSettingPage);
GlobalContainer.RegisterType<TfraBasePage, TfraCurrency>(IDCurrencyPage);
GlobalContainer.RegisterType<TfraBasePage, TfraTicketLayOut>(IDTicketLayOutPage);
GlobalContainer.RegisterType<TfraBasePage, TfraSetUp>(IDSetUpPage);
I can call the frame like:
Result := GlobalContainer.Resolve<TfraBasePage>(aPageName);
But the constructor 'create' the owner is nil. How can I pass an owner component?
Now I solve this with 'InsertComponent' after the resolve.
var
oFrame: TfraBasePage;
begin
oFrame:= GlobalContainer.Resolve<TfraBasePage>('SettingPage');
if assigned(oFrame) then
begin
Self.InsertComponent(oFrame);
end;
Is this also possible with a Factory?
TfraBasePage = class(TfraBase, IPage)
...
TfraSetting = class(TfraBasePage)
...
IPageFactory = interface(IInvokable)
['{2E40E3C4-87B7-4313-BE0A-29202B7EB5A1}']
function Create(aOwner: TComponent): TfraBasePage;
end;
...
GlobalContainer.RegisterFactory<IPageFactory>;
GlobalContainer.RegisterType<TfraBasePage, TfraSetting>('SettingPage');
...
var
oFrame: TfraBasePage;
begin
//Here I can't solve how to get the 'SettingPage' Frame with the factory.
//I miss something, the ('SettingPage') is on the wrong place.
oFrame:= GlobalContainer.Resolve<IPageFactory>('SettingPage').Create(Self);