VCL スタイルを試しています。これはばかげた質問かもしれませんが、スタイルを使用するときに異なる背景を持つフォームを持つことは可能ですか? フォームの背景 (クライアント領域) が VCL スタイル デザイナで指定され、フォームのColor
プロパティをオーバーライドしているようです。
背景色が異なるフォームを作成するにはどうすればよいですか? たとえば、モーダル ダイアログの背景色をメイン フォームとは異なるものにしたいとします。
VCL スタイルを試しています。これはばかげた質問かもしれませんが、スタイルを使用するときに異なる背景を持つフォームを持つことは可能ですか? フォームの背景 (クライアント領域) が VCL スタイル デザイナで指定され、フォームのColor
プロパティをオーバーライドしているようです。
背景色が異なるフォームを作成するにはどうすればよいですか? たとえば、モーダル ダイアログの背景色をメイン フォームとは異なるものにしたいとします。
はい、可能です: Delphi XE3、XE4、XE5 を使用している場合:フォームseClient
のStyleElements
プロパティから削除するだけです:
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);