【发布时间】:2012-09-25 01:05:28
【问题描述】:
我之前在 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 风格),但是使用 Style Editor 工具需要 5 秒。 (打开,另存为,将类型更改为 .Style,我就有了!)
Update4:RRUZ 的回答有效,但在我的系统 (Windows 8 RTM) 上,非客户端样式看起来不正确,它们的区域周围有白角 没有完全涂漆。调整窗口大小使它消失,我很确定我应该能够强制 WM_NCREPAINT 或其他东西,让它消失。
【问题讨论】:
-
是的,它来自风格。我还没有完全调查,但是查看 TWindowBorder 对象的 FMX.Forms 单元,这是提取样式的原因。
-
好的。我会阅读 FMX.Forms 来源,看看我是否能弄清楚。也没有包含演示/示例。
-
Embarcadero 工作人员关于此主题的相关博文:blogs.embarcadero.com/ekryukov/2012/10/03/…
-
@WarrenP 我不明白你是如何获得 Luna.Style 的,你打开了什么文件?我的 Windows 8 盒子上没有任何 luna.*。而且我真的需要在细边框中添加非客户区域,其图标和颜色与 XE5 中的表单背景相同。感谢任何帮助。
-
Luna.Style 不附带它,但当然有一个 Luna.vsf,我只是在样式设计器中打开它,然后另存为并将类型更改为 .Style (Fmx)我有 .Style 文件,它包含所需的类型。 – (评论下面的答案!您是否阅读了所有内容?)
标签: delphi firemonkey delphi-xe3