我正在試驗VCL樣式。這可能是一個愚蠢的問題,但是在使用風格時可以使用不同背景的表單嗎?看起來,表單背景(客戶區)是在VCL樣式設計器中指定的,它覆蓋了表單的Color
屬性。用VCL樣式形成背景顏色?
我怎樣才能實現不同背景顏色的形式?例如,我希望我的模式對話框具有與主窗體不同的背景色。
我正在試驗VCL樣式。這可能是一個愚蠢的問題,但是在使用風格時可以使用不同背景的表單嗎?看起來,表單背景(客戶區)是在VCL樣式設計器中指定的,它覆蓋了表單的Color
屬性。用VCL樣式形成背景顏色?
我怎樣才能實現不同背景顏色的形式?例如,我希望我的模式對話框具有與主窗體不同的背景色。
是的,它是可能的: 如果您正在使用德爾福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);
可能重複的[如何顏色與VCL樣式啓用TComboBox的背景](http://stackoverflow.com/questions/16538890/how-to-color-the-background-ofa-a- tcombobox-with-vcl-styles-enabled) –
另外有用的鏈接在http://stackoverflow.com/questions/9906312/ –
鏈接@Arioch'The提供的包含解決方案,你只需要適應一些事情:'' TFromStyleHookExt = class(TFormStyleHook)'改變TWinControlClass(Control)。到TForm(控制)。適配初始化TStyleManager.Engine.RegisterStyleHook(TForm_XY,TFromStyleHookExt);並更改WndProc。 – bummi