0

我正在尝试使用 VCL 样式。这可能是一个愚蠢的问题,但是在使用样式时是否可以有具有不同背景的表单?似乎在 VCL 样式设计器中指定了表单背景(客户区),它覆盖了表单的Color属性。

如何实现具有不同背景颜色的表单?例如,我希望我的模态对话框具有与主窗体不同的背景颜色。

4

1 回答 1

6

是的,有可能:如果您使用的是 Delphi XE3、XE4、XE5:您只需seClientStyleElements表单的属性中删除:

 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);

在此处输入图像描述

于 2013-10-28T11:41:37.030 回答