代码之家  ›  专栏  ›  技术社区  ›  Vibeeshan Mahadeva

如何将delphi tframe从dll加载到delphi应用程序

  •  1
  • Vibeeshan Mahadeva  · 技术社区  · 14 年前

    我用tframe创建了一个dll。 如何在我的应用程序中加载它,我不喜欢使用BPL,我只想在我的应用程序中分解exe和dlls

    2 回复  |  直到 14 年前
        1
  •  5
  •   Jeroen Wiert Pluimers    14 年前

    因为BPL是一个动态链接库,所以使用BPL的方法要容易得多。

        2
  •  0
  •   Wim ten Brink    14 年前

    这是可以做到的,但要让它在没有错误或内存问题的情况下工作是一件很糟糕的工作。更糟的是,您将在应用程序中使用两个VCL,一个在可执行文件中,另一个在DLL中。您的框架将尝试引用dll vcl,它将提供与exe vcl非常不同的信息。尤其是在检查全局屏幕和应用程序变量时。
    不过,框架只不过是一个特殊的窗口控件,就像窗体一样。您可以从DLL中导出一个函数,该函数将返回类型为tframe的值。您的应用程序可以调用这个函数,从而创建框架,以任何方式使用它使用所有其他框架。不过,它不会在您的框架内提供任何关于附加功能的具体信息。
    接下来你要做的就是在与VCL相关的exe和dll之间同步数据。那不是很漂亮。另外,在使用tab键通过屏幕上的控件进行制表时,您可能会遇到一些问题,因为tab键无法在框架外制表。你会注意到一些更奇怪的事情。
    我已经开发了一个简单的应用程序,用这种方式使用框架。我和另外两个人花了两个月的时间找到了一些有效的解决方案,它在没有内存泄漏和其他问题的情况下工作得很好。在我们开始那个项目之前,这似乎是个好主意。后来,我们决定它不是我们想要的解决方案,所以我们将dll的代码与可执行文件的代码合并,只创建一个可执行文件。那样更好。
    不过,我们确实使用了另一种选择。我们开始在主窗体中使用WebBrowser组件。DLL将包含一个格式良好的HTML页面,以及一组在使用特定函数时调用的方法。我们在一个简单的测试应用程序中进行了这项工作,取得了很好的结果,但随后公司进入了第11章…我的雇主破产了,因为与某个客户的交易失败了,给公司留下了巨额债务。于是一个有趣的项目结束了…