我遇到了一个问题,我通常无法使用其属性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样式并遇到与该公司复选框反模式相关的所有问题.