我终于设法在启用 Aero 的 Win7 64 上重现了 Delphi XE(更新 1)中的问题。似乎 .DFM 文件中的大小设置错误,并且由于Ribbon
不支持手动调整大小,您无法在 IDE (尽管它在运行时正确显示)或Object Inspector
. 它偶尔会在运行时正确显示,但似乎也是零星的。
这是一个令人讨厌的错误,因为它使设计Ribbon
. 您可以添加RibbonGroup
项目,分配ActionManager
,并尝试使用 完全设计它Structure Pane
,但这当然不是一个实际的解决方案。
幸运的是,有一个非常简单的解决方法,尽管这样做很烦人。:)
我设法两次使以下解决方法起作用,但是重新开始它几次都失败了,所以这是一种可能的解决方法(没有承诺 - 在 XE 中工作,在 XE2 更新 2 中始终失败):
- 右键单击
Ribbon
并添加至少一个选项卡。
- 右键单击 IDE 中的表单,然后
View as Text
从上下文(弹出)菜单中进行选择。
- 在文本 中找到
Ribbon
控件,然后将 IDE 分配给的 更改为。(下一步将对其进行调整,但这很好 -解决了眼前的问题。).dfm
Height
26
200
200
- 再次右键单击,然后选择
View as Form
,Ribbon
应该会正确显示。
(我在 QC 中针对 XE2 Update 2 报告了它,因为那里也存在问题 - QC #101642)
我追踪到它TCustomRibbon.GetCaptionHeight
,特别是
FCaptionHeight := Max(GetSystemMetrics(SM_CYCAPTION), 26);
似乎该GetSystemMetrics
调用返回的内容少于26
某些 Win7 配置(尽管我还不知道为什么)。该方法中有几行注释似乎会改变结果,但正如我所说,它们已被注释掉。
奇怪的是,在 中TCustomRibbon.Create
,Height
通过调用设置GetRibbonMetric(rmFullHeight)
,设置Result := cRibbonHeight + GetCaptionHeight;
,并且 cRibbonHeight
是定义为的常量cRibbonHeight = 117;
。
最后认为我已经追踪到了这个。在 的声明中TRibbon
,有一个published
属性声明:
published
...
property Height default TCustomRibbon.cRibbonHeight;
因为这是默认值,所以看起来任何其他值都意味着GetRibbonMetric
不会发生上面提到的调用(参见TCustomRibbon.Create
上面提到的),调用的奇怪结果GetSystemMetric
导致错误值26
被保存为“其他值” `。奇怪的;将在上午更新 QC。
附录:更新了 QC 报告并提供了更多详细信息。
附录:QC 报告于2012 年 5 月打开,但在 XE5 更新 1 时似乎尚未解决(2014 年 1 月检查)。