【问题标题】:How do I make my ActiveX controls show up on the Toolbox in Visual Studio (and others)如何让我的 ActiveX 控件显示在 Visual Studio(和其他)的工具箱中
【发布时间】:2013-01-19 11:24:03
【问题描述】:

我在 Delphi 中编写了一系列 ActiveX 控件,用于其他开发环境(例如 Visual Studio 或 dBASE for Windows,作为两个示例)

我使用作为 RAD Studio IDE 的一部分提供的 ActiveX 向导为我的基于 VCL 的控件生成 ActiveX“绑定”(为了更好的词),但它似乎没有生成制作它们所需的源代码出现在 IDE 组件托盘上。

通常在那些 IDE(Visual Studio 和 dBASE Plus)上,我可以简单地导入一个 ActiveX 控件,它会显示在他们的工具箱(他们的组件托盘版本)上,并带有他们定义的图标。

好吧,我自己在 Delphi 中生成的 ActiveX 控件没有(它们导入得很好,但没有出现在托盘/工具箱上),过去两周我一直在搜索 Google 试图找到解决方案.

惨遭失败,我决定在这里问:

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

感谢您的任何意见/建议。

编辑:一些额外的信息...

我一直在尝试对 XE2 和 XE3 执行此操作,但每次都失败了……但是,当我对 Delphi 2007 执行相同的操作(使用向导)时,组件的图标确实显示在根据需要其他 IDE 的 Pallet/Toolbox。 这意味着该问题是在 Delphi 2007 之后的某个时间引入的,并且可能是某些 RTL/VCL 修改的结果。

【问题讨论】:

  • 听起来你需要用 Embarcadero 解决这个问题。
  • 我刚刚用 BitButton 创建了一个简单的测试。导入工作。该控件出现在“工具箱”的“常规”部分中,位于“指针”旁边。当我在 VS2012(Oxygene 不是完整的 VS)中的表单上拖动控件时,Studio 告诉我 - 无法导入 ActiveX 控件。请确保已正确注册。但我发现没有有效的 OCX 控件。所以不知道这个测试好不好。
  • @MichaelBunny:你需要先注册 ActiveX Server(Delphi 的 Run->Register ActiveX Server,或者在命令提示符下使用项目文件夹中的regsvr32 YourControl.DLL)才能真正使用它。跨度>
  • OCX 文件确实已注册,并且可以通过 ActiveX 容器对象使用...我只需要它显示在 dBASE Plus 上的 ActiveX 托盘中(这是这个东西的预期用户群) .正如我所说:用 D2007 生产一个,一切正常,D2009 或更高版本,它没有。我在考虑一个 unicode 问题。

标签: windows visual-studio delphi activex dbase


【解决方案1】:

我的研究得出结论,Unicode 版本的 Delphi(2009 到 XE3)无法使用提供的向导为 ActiveX 控件生成正确的标记。

此外,自 Delphi 2007 以来对 RTL 和 VCL 的更改意味着,即使您手动生成必要的源代码标记,当嵌入非 Delphi 应用程序(例如 Visual Studio 和 dBASE Plus)时,您的控件也不会正常运行)。这在很大程度上与 VCL 对符合 VCL 的Parent 属性值的假设有关,其中ParentFont 等属性的更新将导致访问冲突错误。

我的解决方案是在 Delphi 2007 中生成导出的 ActiveX 控件(它是与其他 ActiveX 控件消费者“公平竞争”的最新版本)

希望这些信息可以为您省去为了得出这个结论而必须经历的漫长而烦人的事实调查过程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多