我目前有一个包含TForm后代的dll,在调用导出的函数时会显示。客户端应用程序具有不同的发布周期,因此当dll必须更改时,这将最小化对它们的不必要更改。这种方法存在众所周知的问题,源于dll和客户端应用程序具有不同的TApplication实例,所以我不会进一步详述。 BPL是这个问题的推荐解决方案,但目前不是一个选项,因为客户端应用程序是在不同版本的Delphi中编译的(我希望保持选项在少数非delphi应用程序中可以重用)。
为了避免这些问题,我试图用包含自包含的 Active Form 控件的ocx替换dll,该控件可以通过将其放到TOleContainer中的表单上或客户端应用程序中显示。作为一个包裹的控制。
使用文档和一些教程我创建了一个ocx项目,活动表单并注册了它。然后我开始着手将它变成一个测试应用程序。我没有问题让控件显示在TOleContainer中,但它不会响应鼠标或键盘操作。我认为这可能是TOleContainer的限制所以我使用“导入组件”导入ocx并将生成的VCL组件包装器放到我的表单上。结果相同。对任何鼠标或键盘操作都没有响应。 (除了右键单击控件显示“属性”上下文菜单)
我已阅读并重读了文档和教程,但没有看到我错过了任何步骤。根据他们,它“只是有效”。我确信有些东西我不见了。