8

我之前在 Delphi XE2 时间范围内问过这个问题,当时的答案是一个非常丑陋的 hack

根据官方发布说明,现在 Delphi XE3 支持非客户端主题。你如何在 Firemonkey FM2 的 Delphi XE3 中做到这一点?

我相信这一定与样式书有关,但我无法弄清楚。表单本身有一个“EnableBorderStyling”属性,我将其设置为 true,我想我必须加载一个包含一些非客户端主题数据的样式,但我找不到包含它的样式。

帮助与此主题无关​​。

Update2好的,没坏,只是我没有包含这个样式元素的样式(如RRUZ所说)。

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

Update3:样式文件似乎位于两个不同的位置,这令人困惑:

  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,我就有了!)

更新 4: RRUZ的答案有效,但在我的系统(Windows 8 RTM)上,非客户端样式看起来不正确,它们在未完全绘制的区域周围有白色角。调整窗口大小使它消失,我很确定我应该能够强制 WM_NCREPAINT 或其他东西,让它消失。

4

1 回答 1

7

要为 Firemonkey 应用程序的非客户区设置样式,所选样式必须 windowborderstyle定义一个元素(如图所示)

在此处输入图像描述

从 delphi 包含的样式中尝试Luna.Style

在此处输入图像描述

于 2012-10-05T02:11:48.860 回答