代码之家  ›  专栏  ›  技术社区  ›  Warren P

如何在DelphiXE3中的FiremonkeyFM2应用程序中设置非客户端区域的样式

  •  8
  • Warren P  · 技术社区  · 14 年前

    我之前在DelphiXE2时间框架中问过这个问题,当时的答案是 ugly hack 。

    根据官方发布的说明,现在DelphiXE3支持非客户端主题化。如何在FiremonkeyFM2中的DelphiXE3中做到这一点?

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

    帮助与这个主题无关。

    更新2 好吧,它并没有坏,只是我没有包含这个样式元素的样式(正如RRUZ所说)。

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

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

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

    请注意,我在这两个位置都没有Luna.Style(firemonkey样式),但使用样式编辑器工具5秒。(打开并另存为,然后将类型更改为.Style,我就有了一个!)

    更新4 :RRUZ的答案是有效的,但在我的系统(Windows 8 RTM)上,非客户端样式看起来不对,它们在 没有完全油漆。调整窗户的大小会让它消失,我确信我应该能够强制使用WM_NCREPAINT或其他东西,让它消失。

    1 回复  |  直到 9 年前
        1
  •  7
  •   RRUZ    14 年前

    要对Firemonkey应用程序的非客户端区域进行样式设置,所选样式必须具有 windowborderstyle 元素定义(如图所示)

    enter image description here

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

    enter image description here