Mat*_*att 4 delphi vcl design-time delphi-10.2-tokyo
我在 Delphi 中围绕 TWebBrowser 构建了一个包装器。包装器旨在将多个 Web 浏览器(边缘铬、铬等)实现到单个包装器中,该包装器自动检测要使用的浏览器。
完成课程后,我将所述课程转换为 VCL 组件并将其加载到设计时包中。我的组件只包含两个文件,包装器本身和一个实用程序类。当我将组件从工具选项板拖到 VCL 表单上时,包装器和实用程序类不会自动添加到项目中。这意味着我必须手动将包装器和实用程序都包含到项目中。
我希望有一种方法可以在将包装器添加到表单时自动将这两个文件包含到项目中。我想我以前在我使用过的其他第三方组件中看到过这一点,但我的记忆可能让我失望。
如果这是可以完成的事情,我的假设是它将位于 VCL 组件的寄存器部分。
procedure Register;
begin
RegisterComponents('My Wrappers', [TWebBrowserWrapper]);
end;
Run Code Online (Sandbox Code Playgroud)
因为这是我认为在设计时运行的代码。
让您的设计时包实现一个继承TSelectionEditor并覆盖其虚RequiresUnits()方法的类,然后使用RegisterSelectionEditor(). 这样,每当您在设计时将组件放置到 Form/Frame/DataModule Designer 时,您报告的任何其他单元RequiresUnits()将在uses保存单元时自动添加到该单元的子句中。
例如:
uses
..., DesignIntf;
type
TWebBrowserWrapperSelectionEditor = class(TSelectionEditor)
public
procedure RequiresUnits(Proc: TGetStrProc); override;
end;
procedure TWebBrowserWrapperSelectionEditor.RequiresUnits(Proc: TGetStrProc);
begin
inherited RequiresUnits(Proc);
// call Proc() for each additional unit you want added...
Proc('MyWrapperUnit');
Proc('MyUtilityUnit');
end;
procedure Register;
begin
RegisterComponents('My Wrappers', [TWebBrowserWrapper]);
RegisterSelectionEditor(TWebBrowserWrapper, TWebBrowserWrapperSelectionEditor);
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |