我用 tframe 创建了一个 dll。我如何在我的应用程序中加载它,我不喜欢使用 bpls,我只想用我的应用程序分发 exe 和 dll
2 回答
由于 BPL 是 DLL,因此采用 BPL 方式:更容易。
它可以完成,但要让它在没有错误或内存问题的情况下工作是一项艰巨的工作。更糟糕的是,您将在应用程序中使用两个 VCL,一个在可执行文件中,另一个在 DLL 中。您的框架会尝试引用 DLL VCL,这将提供与 EXE VCL 非常不同的信息。特别是在检查全局 Screen 和 Application 变量时。
尽管如此,框架只不过是一个特殊的窗口控件,就像窗体一样。您可以从 DLL 中导出一个函数,该函数将返回 TFrame 类型的值。您的应用程序将能够调用此函数并因此创建框架,以任何方式使用它,它使用所有其他框架。但是,它不会包含有关框架内其他功能的任何特定信息。
接下来你必须做的事情是在 EXE 和与 VCL 相关的 DLL 之间同步数据。那不是很漂亮。另外,当使用 tab 键在屏幕上的控件之间切换时,您可能会遇到一些问题,因为 tab 键将无法在框架外切换。你会注意到更多这样的怪事。
我研究过一个以这种方式使用框架的简单应用程序。我和另外两个人花了两个月的时间找到了一些可行的解决方案,该解决方案确实运行良好,没有内存泄漏和其他麻烦。在我们开始那个项目之前,这似乎是一个好主意。之后,我们认为它不是我们想要的解决方案,所以我们将 DLL 的代码与可执行文件的代码合并,只创建一个可执行文件。
不过,我们确实使用了另一种选择。我们开始在主窗体中使用 webbrowser 组件。DLL 将包含一个 HTML 页面,格式很好,以及在使用某些特定函数时会调用的一堆方法。我们在一个简单的测试应用程序中进行了这个工作,结果很好,但随后公司进入了第 11 章……我的雇主破产了,因为与一些客户的交易严重失败,给公司留下了巨额债务。一个有趣的项目就这样结束了……