如何在Delphi XE3中的Firemonkey FM2应用程序中设置非客户区域的样式

时间:2012-10-04 03:05:16

标签: delphi firemonkey delphi-xe3

我之前在Delphi XE2时间框架中提出了这个问题,然后答案很漂亮ugly 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样式),但使用样式编辑器工具则为5秒。 (打开,另存为,并将类型更改为.Style,我有一个!)

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

1 个答案:

答案 0 :(得分:7)

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

enter image description here

从delphi附带的样式中尝试Luna.Style

enter image description here