使用VCL样式时覆盖某些TBitButton的样式

时间:2013-10-02 15:54:27

标签: delphi delphi-xe2 vcl vcl-styles

我希望能够在我正在处理的应用程序中将一定的样式应用于少数BitBtn。我已经应用了VCL样式来整理我的整个应用程序。

根据我在网上阅读时的理解,我可以定义自己的TBitBtn子类,然后我可以为该给定的类定义一个样式钩子。

我让它与TLabel和TEdit一起使用,但我不太确定如何为TButton或TBitBtn管理它。基本上,我想将不同的背景图像应用于自定义TBitBtn而不是主题中包含的背景图像。

1 个答案:

答案 0 :(得分:4)

使用Vcl样式修改TBitBtn的外观,取决于您的Delphi版本

XE4,XE5

您必须创建一个派生自TBitBtnStyleHook类的新样式钩子,然后覆盖DrawButton方法。请查看此问题Disabling TButton issue on a VCL styled form我发布了一个示例代码,在这种情况下覆盖TButtonStyleHook.Paint方法以修复错误,但您可以根据自己的需要调整相同的代码。

XE2,XE3

TBitBtn在这些版本上没有使用样式挂钩,因此您唯一的选择是处理TBitBtn控件的CN_DRAWITEM消息,然后添加您自己的代码来绘制按钮,就像在这个答案Delphi XE2 VCL styles, How to disable VCL styles on TBitBtn?