[英]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
屬性。
您已經找到了解決方法:
設置具有相同GradientEndColor
和GradientStartColor
。
將工具欄放在另一個控件(例如TPanel)上並更改該控件的顏色,因為工具欄是透明的,父顏色將透過。
您需要將面板的BevelInner
/ BevelOuter
為bvNone
。
啟用VCL樣式並遇到與該公司復選框反模式相關的所有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.