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

时间:2009-11-16 15:08:40

标签: delphi ide toolbar

像这样的接缝只适用于真正的Delphi极客。

这是它的样子(对不起,不能张贴图片)
Delphi IDE ugly toolbar

alt text
(来源:piccy.info

出了什么问题 - 禁用Delphi IDE工具栏和菜单按钮是丑陋的黑/白图像。
我想做什么 - 让它们看起来像灰度。

怎么样?我做了一些研究。虚拟TCustomImageList.DoDraw方法中的主要问题。当参数Enabled = False描绘丑陋的东西时(请参见屏幕截图上的禁用按钮)。我为此函数创建了自己的覆盖,并在Enabled = False

时绘制了灰度图像

现在我想在IDE中使用我自己的 替换默认DoDraw(使用设计时包):

  1. 我发现单元ImgList是在bds.exe中编译的,所以在rtlXXX.bpl中修补此函数的技巧是行不通的。
  2. 搜索功能的正文内容没有结果。看起来像DoDraw的bds.exe的实现(我对机器代码很感兴趣)有点不同。
  3. 有关如何实现这一目标的任何建议或想法?作为运行时代码修补的基本示例,我采用了Andy的Midas Speed Fix:FindMethodPtrHookProcUnhookProc

4 个答案:

答案 0 :(得分:4)

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

这就是我的IDE现在的样子:
Fixed toolbar http://blog.frantic.im/wp-content/uploads/2009/11/delphi-ide-after.PNG

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

答案 1 :(得分:0)

也许我很难理解这个问题,但是如果你只是想要覆盖DoDraw函数,为什么不创建自己的继承自TCustomImageList的组件,覆盖所需的函数以便它做你想要的并注册它进入IDE?

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

我过去曾试图弄清楚Delphi为了获得残疾人图像所做的工作并在此基础上进行构建。但它仍然在我的“待办事项”清单上完成。

尽管如此,这些是关于Delphi“故障”的一些文章,我很久以前就遇到过可能会或可能不会帮助你的文章:

  1. Indistinguishable gray blobs in disabled menu items, by Vladimir S.

  2. MenuImgList.pas

  3. Fixing a Buttons Drawing Glitch in Delphi 5

  4. Fixing a Menu Drawing Glitch in Delphi 4