* 注冊窗體服務,引用單元 qplugins_vcl_formsvc
~~~
function RegisterFormService(const APath, AName: QStringW; AForm: TForm)
: IQFormService; overload;
function RegisterFormService(const AId: TGuid; const APath, AName: QStringW;
AForm: TForm): IQFormService; overload;
function RegisterFormService(const APath, AName: QStringW; AClass: TFormClass;
AMultiInstance: Boolean = True): IQFormService; overload;
function RegisterFormService(const AId: TGuid; const APath, AName: QStringW;
AClass: TFormClass; AMultiInstance: Boolean = True): IQFormService; overload;
~~~
* 注冊窗體或非窗體服務 **必需實現IQService接口** , 引用單元 qplugins
~~~
//AServices:服務列表,必需實現IQService接口
procedure RegisterServices(AParent: PWideChar; AServices: array of IQService);
//以下是注冊過程
initialization
// 注冊 /Services/Docks/Frame 服務
RegisterServices('Services/Docks',
[TDockInstanceService.Create(IDockableControl, 'Frame2')]);
finalization
// 取消服務注冊
UnregisterServices('Services/Docks', ['Frame2']);
//或可以這樣
initialization
RegisterServices('Services', [TParamTestService.Create(IParamTestService,
'Params')]);
finalization
UnregisterServices('Services', ['Params']);
~~~
所有注冊的服務都是通過 UnregisterServices 來取消注冊的
~~~
/// <summary>
/// 取消一組服務的注冊
/// </summary>
/// <param name="APath">
/// 服務的父路徑
/// </param>
/// <param name="AServices">
/// 要取消注冊的服務名稱列表
/// </param>
procedure UnregisterServices(APath: PWideChar; AServices: array of QStringW);
//如下調用,
finalization
UnregisterServices('/Services/Docks/Forms', ['DLL_Static','DLL_StaticMuti']);
~~~