TBitBtn仅使用旧版Windows主题显示

时间:2014-12-03 12:58:35

标签: delphi user-interface button manifest delphi-6

我为我的Delphi 6应用程序创建了清单文件,因此它可以根据Windows定义的主题(控件6.0)显示控件。一切看起来都很好,除了TBitBtn组件,使用遗留主题显示:

Legacy TBitBtn

在Windows XP和Windows 7上,无论当前主题如何,行为都是相同的,即使没有为TBitBtn组件分配图像。

现在,当我在表单上放置常规TButton组件时,它会显示OK。如果我然后在运行时以编程方式将图像设置为此按钮(使用SendMessage(Handle, BM_SETIMAGE, IMAGE_ICON, LPARAM(Icon))),它会立即将其样式恢复为旧样式。

有没有办法让TBitBtn使用正确的样式,或者在常规TButton上显示字形而不必恢复到Delphi 6中的遗留样式?

1 个答案:

答案 0 :(得分:5)

在Delphi 6中,仅添加comctl32 v6清单是不够的。您还需要修改VCL才能识别主题。 TBitBtn控件是一个VCL实现的控件,在其Delphi 6版本中,对XP主题一无所知。

处理此问题的标准方法是添加一些执行魔术的第三方软件。这是XP theme manager from Mike Lischke

这是包含主题管理器的Delphi 6应用程序的屏幕截图:

enter image description here