这是它的样子(对不起,不能张贴图片)
Delphi IDE ugly toolbar
(来源:piccy.info)
出了什么问题 - 禁用Delphi IDE工具栏和菜单按钮是丑陋的黑/白图像。
我想做什么 - 让它们看起来像灰度。
怎么样?我做了一些研究。虚拟TCustomImageList.DoDraw
方法中的主要问题。当参数Enabled = False
描绘丑陋的东西时(请参见屏幕截图上的禁用按钮)。我为此函数创建了自己的覆盖,并在Enabled = False
现在我想在IDE中使用我自己的 替换默认DoDraw
(使用设计时包):
rtlXXX.bpl
中修补此函数的技巧是行不通的。 DoDraw
的bds.exe的实现(我对机器代码很感兴趣)有点不同。有关如何实现这一目标的任何建议或想法?作为运行时代码修补的基本示例,我采用了Andy的Midas Speed Fix:FindMethodPtr
,HookProc
,UnhookProc
答案 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“故障”的一些文章,我很久以前就遇到过可能会或可能不会帮助你的文章: