2011-05-15 63 views
1

如何設置主題TStatusBar組件的背景顏色?當我設置顏色屬性時,僅在Enabled runtime themes被禁用時才起作用。設置主題StatusBar組件的背景顏色

在此先感謝。

+2

主題的目的:保證一致的顏色和字體方案。因此,當啓用主題時,實際上可以預料,大多數(如果不是全部)對顏色和字體屬性的更改都將被忽略。 – 2011-05-15 20:03:11

+0

我想改變顏色,因爲是爲用戶顯示警報消息並獲得他們的關注。 – Salvador 2011-05-15 20:12:54

+3

主題是讓用戶來控制顏色。你應該與他們合作,而不是試圖與他們作鬥爭。 – 2011-05-16 02:17:23

回答

2

不知道這是你需要什麼,但你可以簡單地禁用主題繪畫特定的控制,在這種情況下你的狀態欄,就像這樣:

Uses 
    uxTheme; 

SetWindowTheme(StatusBar1.Handle, '', ''); 
1

您可以編寫自己的OwnerDraw,事件和繪製狀態欄:用自己的顏色:

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; 
    Panel: TStatusPanel; const Rect: TRect); 
begin 
    with StatusBar.Canvas do begin 
    Brush.Color := clRed; 
    FillRect(Rect); 
    TextOut(Rect.Left, Rect.Top, 'Panel '+IntToStr(Panel.Index)); 
    end; 
end; 

但隨着它的主題是不可能改變的(準確地說每一塊板就可以了!)對象檢查器中的顏色。

+1

只有幾點提示:1)沒有必要在代碼中指定statusbar1,因爲事件已經通過了TStatusBar。 2)爲此,您需要將面板的樣式設置爲psOwnerDraw。 3)我不喜歡建築。 – Linas 2011-05-15 21:32:01

+1

1)好的。編輯。 2)是的。 3)這主要是品味的問題,不是嗎? – Andreas 2011-05-16 06:04:56

+0

'與'被認爲是有害的,請參閱:http://stackoverflow.com/questions/71419/whats-wrong-with-delphis-with – Johan 2011-05-16 22:02:15