在delphi中,创建ActiveX控件曾经比现在更流行。然而,仍然可以使用 Delphi 创建 ActiveX 控件。这个问题假设Delphi 2007,但是无论你使用什么Delphi版本,它都应该是相同的。
在Delphi中创建ActiveX控件时会出现一些奇怪的错误。就我而言,我可以 现在不再导入我试图导入和包装的某个类,Delphi 不会再告诉我为什么,只是它无法加载单元“符号信息”。
在本例中,我正在包装一个开源控件,并且我最初几次尝试包装它效果很好,但我发现一旦发现以 ActiveX 包装器丢失的方式编写的属性,我就必须重做导入。重新生成 ActiveX 包装器比手动修复它更容易。直到你像这样冷下来:
Error
Could not load unit [unit] symbol information for [TClassName].
Do you want to try to find this file yourself?
如果单击“是”,则会出现一个浏览(文件打开)对话框,并且文件过滤器设置为“DCU”。这意味着,它希望我找到该设备的 DCU 文件。无论我浏览还是不浏览,结果都是一样的。无论重新编译多少次都无法清除此错误情况。
有谁知道这个错误的真正含义,更好的是,如何解决它?谷歌搜索这个特定的错误消息显示它出现在英语以外的论坛中,但它是如此晦涩难懂,没有人记录它。
Delphi 中的库路径存在一个问题,为了使 ActiveX 控件向导正常工作,解析器解析相关单元所需的所有源都必须位于库路径中。由于 ActiveX 控件向导在您的项目之外运行,因此您的项目搜索路径不包含在用于解析要包装并转换为 ActiveX 控件的 VCL 控件源的文件夹列表中。
解决方案:
修复库路径。
在运行 ActiveX 控件向导之前,我可以通过将自定义组件引用的所有单元添加到项目文件 (*.dpr) 来解决此问题。