我正在试验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