8

私は以前、Delphi XE2 のタイムフレームでこの質問をしましたが、答えはかなり醜いハックでした。

公式のリリース ノートによると、現在、Delphi XE3 は非クライアント テーマをサポートしています。Firemonkey FM2 の Delphi XE3 でどのように行うのですか?

スタイルブックと関係があるに違いないと思いますが、わかりません。フォーム自体には、true に設定した「EnableBorderStyling」プロパティがあり、非クライアント テーマ データを含むスタイルをロードする必要があると考えていますが、それを含むスタイルが見つかりません。

ヘルプには、この件については何もありません。

Update2わかりました、壊れていません。このスタイル要素を含むスタイルを持っていないだけです (RRUZ が言うように)。

procedure TForm1.FormShow(Sender: TObject);
begin
  StyleBook := StyleBook1;
  WindowBorder.UpdateStyle;
end;

Update3 : スタイル ファイルが 2 つの異なる場所にあるように見え、混乱を招きます。

  C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Redist\styles\Fmx        
  C:\Users\Public\Documents\RAD Studio\10.0\Styles

どちらの場所にも Luna.Style (firemonkey スタイル) はありませんが、Style Editor ツールを使用すると 5 秒かかることに注意してください。(開いて、名前を付けて保存し、タイプを .Style に変更すると、1 つありました!)

Update4 : RRUZ の答えは機能しますが、私のシステム (Windows 8 RTM) では、非クライアント スタイルが正しく見えません。ウィンドウのサイズを変更すると、ウィンドウが消えます。WM_NCREPAINT などを強制して、ウィンドウを消すことができるはずです。

4

1 に答える 1

7

Firemonkey アプリケーションの非クライアント領域をスタイルするには、選択したスタイルに windowborderstyle要素が定義されている必要があります (図に示すように)。

ここに画像の説明を入力

Delphi に含まれているスタイルから、Luna.Style

ここに画像の説明を入力

于 2012-10-05T02:11:48.860 に答える