如何让我的ActiveX控件在Visual Studio(以及其他工具)的工具箱中显示?

3
我用Delphi编写了一系列ActiveX控件,可供其他开发环境使用(例如Visual Studio或dBASE for Windows等)。
我使用RAD Studio IDE提供的ActiveX向导生成基于VCL的控件的ActiveX“绑定”(为了更好的说法),但它似乎没有生成必要的源代码,以使它们出现在IDE组件面板上。
通常在那些IDE中(如Visual Studio和dBASE Plus),我可以简单地导入一个ActiveX控件,它将显示在他们的工具箱(他们版本的组件面板)上,并带有它们定义的图标。
然而,我的自己在Delphi中生成的ActiveX控件却没有(它们很好地导入,但不会出现在面板/工具箱上),我已经搜索了谷歌两个星期,试图找到解决方案。
失败后,我决定在这里问: 如何使我的ActiveX控件出现在Visual Studio(和其他)的工具箱中? 感谢任何建议/建议。
编辑:一些额外信息...
我一直在尝试使用XE2和XE3完成这个操作,但每次都失败了...然而,在Delphi 2007中做同样的事情(使用向导)时,组件的图标确实会出现在其他IDE的面板/工具箱中。
这意味着该问题是在Delphi 2007之后引入的,并且很可能是一些RTL/VCL修改的结果。

1
听起来你需要向Embarcadero提出这个问题。 - 500 - Internal Server Error
我刚创建了一个带有BitButton的简单测试。导入成功。控件出现在工具箱的General部分旁边的Pointer。当我将控件拖动到VS2012中的窗体上时(Oxygene不是完整的VS),Studio告诉我-无法导入ActiveX控件。请确保它已正确注册。但是我没有找到任何可用的OCX控件。所以我不知道这个测试是否有效。 - user1188260
@MichaelBunny:在实际使用之前,您需要注册ActiveX服务器(Delphi的Run->Register ActiveX Server,或者在命令提示符下从项目文件夹中使用regsvr32 YourControl.DLL)。 - Ken White
OCX 文件已经注册,可以通过 ActiveX 容器对象使用... 我只需要它出现在 dBASE Plus 的 ActiveX 工具箱中(这是此工具的目标用户群)。就像我所说:使用 D2007 创建它,一切都可以正常运行,但如果使用 D2009 或更高版本则不行。我认为这是一个 Unicode 问题。 - LaKraven
1个回答

2
我的研究得出结论,Delphi的Unicode版本(2009到XE3)使用提供的向导不会生成正确的ActiveX控件标记。此外,自Delphi 2007以来RTL和VCL的更改意味着,即使您手动生成所需的源标记,您的控件在嵌入非Delphi应用程序(如Visual Studio和dBASE Plus)中时也无法正常工作。这主要与VCL假定VCL兼容的Parent属性值有关,其中诸如ParentFont之类的属性更新将导致访问冲突错误。在我的情况下,解决方案是在Delphi 2007中生成导出的ActiveX控件(因为它是最新版本,能够“公平地”与其他ActiveX控件使用者相处)。希望这些信息能够节省您长时间而烦人的查找过程,从而得出这个结论。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接