簡體   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