我希望能够在我正在开发的应用程序中将某种样式应用于少数 BitBtn。我已经应用了 VCL 样式来为我的整个应用程序设置皮肤。
根据我在网上阅读的理解,我可以定义我自己的 TBitBtn 子类,然后我可以为给定的类定义一个样式挂钩。
我让它与 TLabel 和 TEdit 一起工作,但我不太确定如何为 TButton 或 TBitBtn 管理它。本质上,我想对自定义 TBitBtn 应用不同的背景图像,而不是主题中包含的背景图像。
我希望能够在我正在开发的应用程序中将某种样式应用于少数 BitBtn。我已经应用了 VCL 样式来为我的整个应用程序设置皮肤。
根据我在网上阅读的理解,我可以定义我自己的 TBitBtn 子类,然后我可以为给定的类定义一个样式挂钩。
我让它与 TLabel 和 TEdit 一起工作,但我不太确定如何为 TButton 或 TBitBtn 管理它。本质上,我想对自定义 TBitBtn 应用不同的背景图像,而不是主题中包含的背景图像。
要TBitBtn
使用 Vcl 样式修改外观,取决于您的 Delphi 版本
您必须创建一个从该类派生的新样式挂钩TBitBtnStyleHook
,然后覆盖该DrawButton
方法。检查这个问题Disabling TButton issue on a VCL styled form
,我发布了一个示例代码,在这种情况下覆盖该TButtonStyleHook.Paint
方法以修复错误,但您可以根据自己的需要调整相同的代码。
在这些TBitBtn
版本上不使用样式挂钩,因此您唯一的选择是处理TBitBtn
控件的 CN_DRAWITEM 消息,然后添加您自己的代码来绘制按钮,如本答案Delphi XE2 VCL 样式中所述,如何禁用 VCL 样式TBitBtn?