更改工具栏背景颜色
Change TToolBar background color
我遇到了一个问题,我无法正常更改 TToolBar
的背景颜色(例如 clwhite
)及其 属性 ToolBar.Color
。我在 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
,因此无论 Toolbar 父级的颜色是什么都会发光。
如果您查看 VCL 源代码,您会发现 TToolbar 不自己绘图;它是 ComCtl32.dll
.
中 ToolbarWindow32
Win32 通用控件的包装器
这是绘图的代码。
当 Windows XP 被引入时,Microsoft 添加了 UI 主题,Borland 通过 VCL.Themes.TStyleManager
.
支持它
你可以通过样式管理器改变Common Controls的外观:Project -> Options -> Appearance -> Custom Styles
,但是很难知道这有什么效果,因为IDE不显示结果(你可以在[=67看到它=] 时间),你只能从有限的相当奇怪的主题列表中进行选择;该功能也有问题。
TPageControl/TTabSheet
也是如此,它没有发布其颜色 属性。
通过 ComCtl32.dll 导入并由 VCL.ComCtrls
实现的所有控件都存在这些不一致问题。
简而言之
您无法使 TToolbar 尊重其 Color
属性.
您已经找到解决方法:
设置GradientEndColor
和GradientStartColor
相同的渐变,或者
将工具栏放在另一个控件(例如 TPanel)上并更改该控件的颜色,因为工具栏是透明的,父颜色会透过。
您需要将面板的 BevelInner
/BevelOuter
设置为 bvNone
,或
启用 VCL 样式并遭受与该公司复选框反模式相关的所有问题。
我遇到了一个问题,我无法正常更改 TToolBar
的背景颜色(例如 clwhite
)及其 属性 ToolBar.Color
。我在 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
,因此无论 Toolbar 父级的颜色是什么都会发光。
如果您查看 VCL 源代码,您会发现 TToolbar 不自己绘图;它是 ComCtl32.dll
.
中 ToolbarWindow32
Win32 通用控件的包装器
这是绘图的代码。
当 Windows XP 被引入时,Microsoft 添加了 UI 主题,Borland 通过 VCL.Themes.TStyleManager
.
支持它
你可以通过样式管理器改变Common Controls的外观:Project -> Options -> Appearance -> Custom Styles
,但是很难知道这有什么效果,因为IDE不显示结果(你可以在[=67看到它=] 时间),你只能从有限的相当奇怪的主题列表中进行选择;该功能也有问题。
TPageControl/TTabSheet
也是如此,它没有发布其颜色 属性。
通过 ComCtl32.dll 导入并由 VCL.ComCtrls
实现的所有控件都存在这些不一致问题。
简而言之
您无法使 TToolbar 尊重其 Color
属性.
您已经找到解决方法:
设置
GradientEndColor
和GradientStartColor
相同的渐变,或者将工具栏放在另一个控件(例如 TPanel)上并更改该控件的颜色,因为工具栏是透明的,父颜色会透过。
您需要将面板的BevelInner
/BevelOuter
设置为bvNone
,或启用 VCL 样式并遭受与该公司复选框反模式相关的所有问题。