DelphiIDE-如何使禁用的工具栏按钮灰度化?

DelphiIDE-如何使禁用的工具栏按钮灰度化?,delphi,ide,toolbar,Delphi,Ide,Toolbar,这种接缝仅适用于真正的德尔福极客 这看起来很抱歉,无法发布图像 资料来源: 有什么不对-禁用的DelphiIDE工具栏和菜单按钮都是丑陋的黑白图像。 我想做的是——让它们看起来灰阶 怎么做?我做了一些调查。虚拟TCustomImageList.DoDraw方法中的主要问题。当paramater Enabled=False时,它会绘制丑陋的东西,请参见屏幕截图上的禁用按钮。我为这个函数创建了自己的覆盖,它在启用=False时绘制灰度图像 现在,我想使用设计时软件包将默认DoDraw替换为我自己

这种接缝仅适用于真正的德尔福极客

这看起来很抱歉,无法发布图像

资料来源:

有什么不对-禁用的DelphiIDE工具栏和菜单按钮都是丑陋的黑白图像。 我想做的是——让它们看起来灰阶

怎么做?我做了一些调查。虚拟TCustomImageList.DoDraw方法中的主要问题。当paramater Enabled=False时,它会绘制丑陋的东西,请参见屏幕截图上的禁用按钮。我为这个函数创建了自己的覆盖,它在启用=False时绘制灰度图像

现在,我想使用设计时软件包将默认DoDraw替换为我自己的in-IDE:

我发现单元ImgList是在bds.exe中编译的,所以在rtlXXX.bpl中修补此函数的技巧将不起作用。 搜索函数的主体内容没有结果。看起来bds.exe的实现与DoDraw的机器代码有些不同。
关于如何实现这一点,有什么建议或想法吗?作为运行时代码修补的基本示例,我采用了Andy的Midas Speed Fix:FindMethodPtr、HookProc、UnhookProc

也许我对这个问题理解得很透彻,但如果您只是想覆盖DoDraw函数,为什么不创建自己的组件继承自TCustomImageList,重写所需的函数,以便它执行您想要的操作并将其注册到IDE中?

也许我对这个问题理解得很透彻,但是如果您只是想重写DoDraw函数,为什么不创建您自己的组件,继承自TCustomImageList,重写所需的函数,使其执行您想要的操作,并将其注册到IDE中?

如果您不想创建自己的重写组件,可以直接在[DelphiPath]\source\Win32\vcl\ImgList.pas中更改实现


但这确实不是一个好方法。

如果您不想制作自己的重写组件,可以直接在[DelphiPath]\source\Win32\vcl\ImgList.pas中更改实现


但这确实不是一个好方法。

我一直不喜欢Delphi从启用的图像创建默认禁用图像的方式。这不仅体现在IDE中,而且会一直持续到您正在开发的应用程序。应用程序中禁用的图像看起来同样糟糕

在过去,我曾试图找出德尔福是如何获得残疾人图像的,并以此为基础进行构建的。但要完成这件事,我的任务清单上仍然有

尽管如此,以下是一些关于我不久前遇到的Delphi故障的文章,可能对您有帮助,也可能没有帮助:


我一直不喜欢Delphi从启用的图像创建默认禁用图像的方式。这不仅体现在IDE中,而且会一直持续到您正在开发的应用程序。应用程序中禁用的图像看起来同样糟糕

在过去,我曾试图找出德尔福是如何获得残疾人图像的,并以此为基础进行构建的。但要完成这件事,我的任务清单上仍然有

尽管如此,以下是一些关于我不久前遇到的Delphi故障的文章,可能对您有帮助,也可能没有帮助:


我做到了:感谢所有参与或查看此问题的人

这就是我的IDE现在的样子:


我把vclXXX.pbl搞砸了,是我的错。可以找到来源。必须启用渐变工具栏才能使其正常工作。如果您对这个想法的进一步发展感兴趣,请阅读主题

我做的:感谢所有参与或查看此问题的人

这就是我的IDE现在的样子:


我把vclXXX.pbl搞砸了,是我的错。可以找到来源。必须启用渐变工具栏才能使其正常工作。如果您对这个想法的进一步发展感兴趣,请阅读主题

…这将给我的所有应用程序带来新的外观和感觉,但我想对RAD Studio IDE本身进行更改。如何用我自己的替换IDE的默认图像列表?…这将给我的所有应用程序带来新的外观和感觉,但我想对RAD Studio IDE本身进行更改。我如何用自己的图像列表替换IDE的默认图像列表?让我更清楚一点-我想修复IDE,而不是我使用它生成的应用程序。为什么你关心IDE如何绘制它的禁用工具按钮?你可以看出他们是残疾人,这才是最重要的。另外,与其自己尝试破解IDE,不如在CodeGear的Quality Central中发布一个bug报告或功能请求,这样维护IDE的开发人员就可以在未来的版本中进行更改。我不想向CodeGear/Embarcadero证明灰阶效果更好,并等待他们实现此功能。如果将禁用的图标设置为灰阶,则最终可能会出现不可见或难以看到的图标-一些转换为灰阶的颜色可能会显示为与背景工具栏本身相同的灰色。我想这就是重点
om Delphi就是这样做的……让我把事情说得更清楚一点——我想修复IDE,而不是我使用它生成的应用程序。为什么你关心IDE如何绘制它的禁用工具按钮?你可以看出他们是残疾人,这才是最重要的。另外,与其自己尝试破解IDE,不如在CodeGear的Quality Central中发布一个bug报告或功能请求,这样维护IDE的开发人员就可以在未来的版本中进行更改。我不想向CodeGear/Embarcadero证明灰阶效果更好,并等待他们实现此功能。如果将禁用的图标设置为灰阶,则最终可能会出现不可见或难以看到的图标-一些转换为灰阶的颜色可能会显示为与背景工具栏本身相同的灰色。我想这就是Delphi的人这样做的目的…@lkessler:你错过了OP对他自己问题的评论,他在评论中表示他想修复IDE的工具栏,而不是他自己的应用程序中的工具栏。所以我做了。当我终于看到有人解决灰斑问题时,我很兴奋,我忽略了他在谈论IDE。即便如此,我还是会更新我的答案并回答他的问题。谢谢。@lkessler:你错过了OP对他自己问题的评论,他在评论中表示他想修复IDE的工具栏,而不是他自己的应用程序中的工具栏。所以我做了。当我终于看到有人解决灰斑问题时,我很兴奋,我忽略了他在谈论IDE。即便如此,我还是会更新我的答案并回答他的问题。谢谢