【发布时间】:2009-11-16 15:08:40
【问题描述】:
像这样的接缝仅适用于真正的 Delphi 极客。
这就是它的样子(抱歉,无法发布图片)
Delphi IDE ugly toolbar
(来源:piccy.info)
出了什么问题 - 禁用的 Delphi IDE 工具栏和菜单按钮是丑陋的黑白图像。
我想要做什么 - 让它们看起来是灰度的。
怎么做?我做了一些研究。虚拟TCustomImageList.DoDraw 方法中的主要问题。当参数Enabled = False 它画出丑陋的东西(请参阅屏幕截图上的禁用按钮)。我为这个函数创建了自己的覆盖,它在Enabled = False 时绘制灰度图像
现在我想用我自己的替换默认的DoDraw(使用设计时包):
- 我发现单元 ImgList 是在 bds.exe 中编译的,因此在
rtlXXX.bpl中修补此函数的技巧将不起作用。 - 搜索函数的正文内容没有结果。看起来
DoDraw的 bds.exe 实现(我在谈论机器代码)有点不同。
关于如何使这成为可能的任何建议或想法?作为运行时代码修补的基本示例,我采用了 Andy 的 Midas Speed Fix:FindMethodPtr、HookProc、UnhookProc
【问题讨论】:
-
让我把事情说得更清楚一点 - 我想修复 IDE,而不是我使用它制作的应用程序
-
你为什么关心 IDE 如何绘制它被禁用的工具按钮?你可以说他们是残疾人,这应该是最重要的。此外,与其尝试自己破解 IDE,不如在 CodeGear 的 Quality Central 中发布错误报告或功能请求,以便维护 IDE 的开发人员可以在未来的版本中进行更改。
-
我想在这里获得一些经验。我不想证明 CodeGear/Embarcadero 灰度更好,并等待他们实现此功能。
-
如果您将禁用的图标设为灰度,您最终可能会得到不可见(或难以看到)的图标 - 转换为灰度的某些颜色可能会显示为与背景相同的灰色(工具栏本身) .我认为这就是德尔福的人这样做的重点......