【问题标题】:Delphi 2010 will not show a component in the Tool Palette even though it shows installed in component package listDelphi 2010 不会在工具面板中显示组件,即使它显示安装在组件包列表中
【发布时间】:2011-01-15 18:31:30
【问题描述】:

我有一个我维护的组件包,TComPort,一个 sourceforge 项目。我最近决定尝试构建包的 C++Builder 2010 版本。那些是建造和安装的。然后我清理了我的系统(所有这些的 bpl 和 dcp 痕迹都消失了!)。

现在我有一种奇怪的情况,我构建运行时,并为 Delphi 2010 构建和安装设计时间包(带有 d14 包后缀),当我单击组件时,组件设计时间包显示并被选中 ->安装包,并且在项目选项中,包也会出现。在任一位置,单击“组件”按钮都会显示这些组件在该包中。

但是,包内的组件不在工具面板中。这些组件的源代码没有真正的变化。而且我不知道为什么 Delphi 2010 会以这种方式运行,或者为什么它告诉我当我安装我的设计时包时,组件包安装正确,但是,没有组件会出现。

编辑:(解决方法:在调用 RegisterComponents 时更改“页面”字符串参数,这个问题得到了解决。但是,它很烦人,我不知道如何清理它)

这是杀手。当我打开包含该组件的 DFM 时,它也会显示出来。只有工具调色板阻碍了我。是的,我重置了组件调色板。 我还决定召唤delphi 7组件调色板的幽灵(右键单击屏幕顶部并单击组件以获取旧的经典组件调色板)。而且它也不存在。

我怀疑这可能是 Delphi 2010 中的一个令人讨厌的错误。我希望有人看到过这样的事情。我告诉你,我要死了,要死了。

编辑: 我已经清理了注册表项 HKEY_CURRENT_USER\Software\CodeGear\BDS\7.0\Package Cache[my package names here],也没有任何变化

编辑: 我将 RegisterComponents( 'foo', [TMyComponent1,....] ) 更改为 RegisterComponents( 'bar', ... ) 突然它们又回来了。 Delphi 2010 在哪里存储“我讨厌类别 Foo”?这很糟糕。

【问题讨论】:

  • 它是否在调色板类别过滤器中取消勾选(就在搜索框的右侧) - 忽略这个,无法取消它只会让您快速进入类别
  • 我从未见过这个调色板类别过滤器。起初看起来很无用,然后我意识到,您可以通过调整大小来使其更大。我建议任何读过这篇文章的 Delphi 人都将调色板类别下拉箭头按钮自动调整大小以一目了然地显示所有内容。这是delphi中隐藏的一个小宝石。没有解决我的问题,但这是一个很酷的发现。
  • 这发生在我的股票 ADO Express/dbGo 组件上。无论出于何种原因,只有 TRDSConnection 会出现。最终,我不得不使用“修复”选项重新安装 IDE,以使它们全部再次出现。

标签: delphi delphi-2010


【解决方案1】:

尝试右键单击工具面板(在搜索编辑和鼠标指针右侧的区域),然后选择“取消隐藏按钮”。如果该类别已被隐藏(或其中的所有项目都已隐藏),您应该能够单独取消隐藏它们,这应该使该组再次可见。

(我刚刚通过删除我从未使用过的整个 Win 3.1 类别对此进行了测试;然后我可以使用上述步骤通过取消隐藏其中包含的一个按钮(如 TOutline)来重新显示它。)

【讨论】:

  • 我也可以隐藏和显示这样的东西。很高兴知道。但它并没有解决这个问题。
  • 啊,好吧。现在你知道我为什么说“尝试”了。 :-)
【解决方案2】:

如果您安装了组件,然后自定义工具面板以将组件放在其他页面上或从所有页面中删除组件,那么 IDE 会记住,以便卸载和重新加载包不会破坏您的自定义。 IDE 显然通过使用其原始注册页面跟踪组件名称来保留该设置。当您更改页面注册名称时,保存的设置将被清除。

如果是这种情况,那么您手动从调色板中删除了该组件。要在不更改注册码的情况下将其重新添加到调色板中,请通过反转用于删除它的任何过程手动将其重新添加到调色板中。

【讨论】:

  • 我实际上并没有有意识地做任何事情来删除它。我怀疑当我尝试注册并随后删除具有相同调色板“页面”名称的 C++Builder 组件时发生了一些事情。
  • 其实有一个修复。如果我更改组件 Reg 页面名称,然后我手动将该组件拖到一个新类别中,它会停留在新类别中,而不是在“我不知道如何取消隐藏它”原始页面/类别中,然后当我将其移回具有该名称的新类别,该名称以前“不工作”,现在可以工作了。
  • 对不起,你完全失去了我。但是,如果您有解决方案,那就太好了。
  • 我只是将组件图标(在代码中更改其页面名称后)拖到不同的页面,然后回到原始页面。一个有用的技巧。
  • 我今天了解了 Delphi 2010 中的调色板类别过滤器,我必须说,它很可爱。谢谢你马克指向我那里。
【解决方案3】:

我在 RAD2007 中遇到过类似的问题:安装成功但有一天 CPortLib 页面从 Tool Palette 中消失了。

在更改所有出现的参数的注册表后,我现在可以使用它了

[Borland\BDS\5.0\包缓存\DsgnCPortD2007.bpl] "按需加载包"="1"

到“0”。

在此 IDE 再次显示 CPortLib 页面后。

此外,将参数恢复为 1 也可以,因为包被 IDE 取消为按需加载的资格,如上所述

Delphi 2005 中按需加载的组件包(作者 Allen Bauer) https://blog.therealoracleatdelphi.com/2004/11/demand-loaded-component-packages-in_15.html

(我在生成的 .rpt 文件中看到取消资格)。

我不知道为什么这个技巧有效,但它对我有效,我希望它对其他人也有效(这篇文章的 4500 位读者)。

【讨论】:

    猜你喜欢
    • 2013-05-03
    • 2023-04-08
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多