【问题标题】:How do you style the non-client area in a Firemonkey FM2 application in Delphi XE3如何在 Delphi XE3 的 Firemonkey FM2 应用程序中设置非客户区的样式
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • Luna.Style 不附带它,但当然有一个 Luna.vsf,我只是在样式设计器中打开它,然后另存为并将类型更改为 .Style (Fmx)我有 .Style 文件,它包含所需的类型。
  • 这可行,但似乎需要一些解决方法(在我的窗口第一次绘制自身后强制 WM_NCREPAINT)以使“透明度”在窗口边框角落正常工作。非常感谢。希望他们能够 (a) 在一个地方统一样式位置,并且 (b) 在 XE3 更新 1 中为所有样式提供 .VSF 和 .Style 文件。
  • @RRUZ 我使用的样式不包含 windowborderstyle,我该如何添加?我在设计编辑器中看不到如何做到这一点?我需要更改 MetropolisUI 样式的非客户端。有非客户端的详细信息(按钮等的不同图标),但我找不到任何东西来定义这个标签。
  • @eelias,您使用的是哪个版本的 Delphi?
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 2017-01-16
  • 2016-07-23
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多