繁体   English   中英

更改TToolBar背景颜色

[英]Change TToolBar background color

我遇到了一个问题,我通常TToolBar使用其属性ToolBar.Color更改clwhite的背景颜色(例如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没有自己的绘图; 它是围绕着一个包装ToolbarWindow32在Win32中常见的控制ComCtl32.dll
这是绘图的代码。
当Windows XP被引入时,Microsoft添加了UI主题,Borland通过VCL.Themes.TStyleManager支持了这VCL.Themes.TStyleManager
您可以通过样式管理器更改公共控件的外观: Project -> Options -> Appearance -> Custom Styles ,但很难知道它有什么影响,因为IDE不显示结果(您可以在运行时看到它)时间)你只能从有限的奇怪主题列表中选择; 这个功能也是错误的。

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

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

  1. 设置具有相同GradientEndColorGradientStartColor

  2. 将工具栏放在另一个控件(例如TPanel)上并更改该控件的颜色,因为工具栏是透明的,父颜色将透过。
    您需要将面板的BevelInner / BevelOuterbvNone

  3. 启用VCL样式并遇到与该公司复选框反模式相关的所有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM