当前位置 : 主页 > 编程语言 > delphi >

delphi – 更改TToolBar背景颜色

来源:互联网 收集:自由互联 发布时间:2021-06-23
我遇到了一个问题,我通常无法使用其属性ToolBar.Color更改TToolBar的背景颜色(例如clwhite).我在Delphi方面不是很有经验,我找到了两种可能的解决方案,但我仍然想知道,如何正确地改变它或为
我遇到了一个问题,我通常无法使用其属性ToolBar.Color更改TToolBar的背景颜色(例如clwhite).我在Delphi方面不是很有经验,我找到了两种可能的解决方案,但我仍然想知道,如何正确地改变它或为什么它不可能.

1)将样式更改为渐变,但它也会更改按钮的基本动画.

ToolBar.DrawingStyle := dsGradient
ToolBar.GradientStartColor := clWhite
ToolBar.GradientEndColor := clWhite

2)使用以下设置将TToolBar放入TPanel中.

Panel.Color := clwhite
ToolBar.Parent := Panel
ToolBar.Align := alClient
ToolBar.Transparent := True
默认情况下,TToolbar会忽略其Color属性.
默认情况下,Transparent属性为true,因此无论工具栏的父级颜色是什么,都会闪耀.

如果您查看VCL源代码,您会看到TToolbar没有自己的绘图;它是ComCtl32.dll中ToolbarWindow32 Win32公共控件的包装器.
这是绘图的代码.
当Windows XP被引入时,Microsoft添加了UI主题,Borland通过VCL.Themes.TStyleManager支持了这一点.
您可以通过样式管理器更改公共控件的外观:项目 – >选项 – >外观 – >自定义样式,但很难知道它有什么影响,因为IDE不显示结果(你可以在运行时看到它),你只能从有限的奇怪主题列表中选择;这个功能也是错误的.

TPageControl / TTabSheet也是如此,它不会发布其Color propery.
通过ComCtl32.dll导入并由VCL.ComCtrls实现的所有控件都会受到这些不一致的影响.

简而言之
没有什么可以让TToolbar尊重它的Color属性.
您已经找到了解决方法:

>使用相同的GradientEndColor和GradientStartColor设置渐变.>将工具栏放在另一个控件(例如TPanel)上并更改该控件的颜色,因为工具栏是透明的,父颜色将透过.您需要将面板的BevelInner / BevelOuter设置为bvNone.>启用VCL样式并遇到与该公司复选框反模式相关的所有问题.

网友评论