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 に答える