我在 Delphi XE2 中有一个项目组,它的功能是从包中加载插件。我创建了这些项目:
PluginInterface.bpl
– 带有插件和 MainForm 接口的包UClassManager.pas
- 插件管理器UPlugin.pas
– 插件界面
MultiPlug2.exe
- 带有可配置菜单的主窗体MainUnit.pas (*.dfm)
– MainForm(MDI 所有者)- 等等... – 一些形式(例如 Splash、数据库登录)
TestPlugin.bpl
– 测试插件UTestPlugin.pas
– 测试插件接口TestForm.pas (*.dfm)
– 测试表(MDI 儿童)。
我有问题
procedure TMainForm.RefreshPluginsList;
var
Pair: TPair<string, TMenuItem>;
I: integer;
begin
for I := 0 to ClassManager.Count - 1 do
RegisterPlugin(ClassManager[i]);
for Pair in MenuDict do
Pair.Value.Visible := Pair.Value.Count > 0;
end;
whereClassManager.Count
总是零,所以RegisterPlugin
永远不会被调用。我应该怎么做才能使其成为 1 并正确注册我的插件?
Handles.Add(LoadPackage('PluginInterface.bpl'))
编辑:我按照建议删除了。这没有帮助。我在跟踪程序时看到了 2 个 Manager 实例。