2013-10-28 68 views
0

我正在試驗VCL樣式。這可能是一個愚蠢的問題,但是在使用風格時可以使用不同背景的表單嗎?看起來,表單背景(客戶區)是在VCL樣式設計器中指定的,它覆蓋了表單的Color屬性。用VCL樣式形成背景顏色?

我怎樣才能實現不同背景顏色的形式?例如,我希望我的模式對話框具有與主窗體不同的背景色。

+1

可能重複的[如何顏色與VCL樣式啓用TComboBox的背景](http://stackoverflow.com/questions/16538890/how-to-color-the-background-ofa-a- tcombobox-with-vcl-styles-enabled) –

+0

另外有用的鏈接在http://stackoverflow.com/questions/9906312/ –

+0

鏈接@Arioch'The提供的包含解決方案,你只需要適應一些事情:'' TFromStyleHookExt = class(TFormStyleHook)'改變TWinControlClass(Control)。到TForm(控制)。適配初始化TStyleManager.Engine.RegisterStyleHook(TForm_XY,TFromStyleHookExt);並更改WndProc。 – bummi

回答

6

是的,它是可能的: 如果您正在使用德爾福XE3,XE4,XE5: 你只需要從形式的StyleElements屬性中刪除seClient

Form3.StyleElements := [seFont, seBorder]; 

如果你是用delphi XE2: 應覆蓋TFormStyleHook類,並趕上WM_ERASEBKGND消息,而不處理默認消息返回:

type 
    TFormStyleHookEx = class(TFormStyleHook) 
    procedure WMEraseBkgnd(var Message: TMessage); message WM_ERASEBKGND; 
    end; 
{ TFormStyleHookEx } 

procedure TFormStyleHookEx.WMEraseBkgnd(var Message: TMessage); 
begin 
    Message.Result := 1; 
end; 

initialization 

TStyleEngine.RegisterStyleHook(TForm3, TFormStyleHookEx); 

enter image description here

+1

他在XE2上,StyleElements在這裏不知道。 – bummi

+0

@ bummi,對不起..檢查新的更新。 –

+0

不錯,簡潔,但不幸的是,恕我直言,問題仍然是重複的。 – bummi