2011-05-16 30 views
2

我在C++ Builder 2010中有一个应用程序,它具有启用了视觉样式/运行时主题以使用按钮和选项卡的运行时查找。但是,如果可能的话,我有一组复选框(TCheckBox),我想重写运行时风格。启用视觉样式时,是否可以覆盖控件的颜色?

我的复选框用于为各种颜色切换一些图形叠加。当我禁用了运行时主题时,我可以设置复选框的背景以显示它将启用的颜色,如下所示: checkboxes with a custom background color

有没有一种方法可以在运行时主题启用时实现同样的效果?

感谢stukelly,我可以有选择地禁用各个控件的视觉风格,但我似乎无法我打电话SetWindowTheme如下后修改控件的颜色或其他造型:

SetWindowTheme(CheckBox1->Handle, L" ", ""); 

回答

1

把它放在自己的面板上每个复选框,将其设置为你想要的颜色。

+0

这么多面板有点麻烦,但它似乎工作,所以我会把它标记为现在的答案。 – Troyen 2011-05-25 22:40:05

+1

启用主题后,很多控件都会获取父控件绘制的背景。少数没有ParentBackground属性来控制TPanel和Tscrollbox这种行为。 ParentColor和扩展颜色属性仅适用于主题被禁用时。虽然使用面板的凌乱不仅适用于主题,而且适用于DevExpress的ExpressSkins for VCL等各种皮肤库。 – Brian 2011-06-02 16:48:52

3

你可以试试禁用每个复选框使用SetWindowTheme函数的主题。

SetWindowTheme(CheckBox1->Handle, NULL, ""); 

我不知道如果第二个参数需要NULLL" "作为文档中提到。

SetWindowTheme(CheckBox1->Handle, L" ", ""); 

我用以下参考来回答这个问题。
http://www.delphigroups.info/3/7/54654.html
borland.public.delphi.ide.general

+0

第二个让我在那里 - 视觉样式肯定是禁用的,我通过的控件。唯一的问题是我现在似乎无法在我调用SetWindowTheme后自定义样式TCheckBox,它只是保留默认样式。看起来第二个链接中的人有同样的问题,但没有得到直接的答案。 – Troyen 2011-05-16 20:45:52

相关问题