我终于在Win7 64上启用了Aero的Delphi XE(Update 1)中管理了问题。看起来尺寸在.DFM文件中被设置错误,并且因为Ribbon
不支持手动调整大小,所以您不能在IDE中将其视觉修正为
(尽管它在运行时正确显示)
或Object Inspector
。它偶尔会在运行时正确显示,但它似乎也是零星的。
这是一个令人讨厌的错误,因为它不可能设计Ribbon
。您可以添加RibbonGroup
项目,并指定ActionManager
,并尝试使用Structure Pane
完全设计它,但这当然不是一个实际的解决方案。
幸运的是,这里有一个非常简单的解决方法,尽管这很麻烦。 :)
我管理了两次以获得以下解决方法的功能,但重新启动它失败了几次,所以这是一种可能的解决方法(没有承诺 - 在XE中工作,在XE2 Update 2中始终失败) :
- 右键单击
Ribbon
并添加至少一个选项卡。
- 右键单击IDE中的窗体,然后从上下文(弹出)菜单中选择
View as Text
。
- 在
.dfm
文本中找到Ribbon
控件,并将Height
从26
更改为IDE分配给200
。 (下一步会调整它,但没关系 - 200
解决了当前的问题。)
- 再次右键单击,然后选择
View as Form
,并且Ribbon
应该正确显示。
(我报告说,它在QC对XE2更新2,作为问题也存在有 - QC#101642)
我就追踪到TCustomRibbon.GetCaptionHeight
,特别是
FCaptionHeight := Max(GetSystemMetrics(SM_CYCAPTION), 26);
这似乎是GetSystemMetrics
通话在某些Win7配置上返回的内容不到26
(尽管我还不明白为什么)。该方法中有几条注释行似乎改变了结果,但正如我所说的那样,它们已被注释掉。
奇怪的是,在TCustomRibbon.Create
,所述Height
通过向GetRibbonMetric(rmFullHeight)
一个呼叫,它设置Result := cRibbonHeight + GetCaptionHeight;
设置,并且cRibbonHeight
是定义为cRibbonHeight = 117;
常数。
终于认为我已经追查到了这一点。在TRibbon
的声明,有一个published
财产申报:
published
...
property Height default TCustomRibbon.cRibbonHeight;
因为这是默认的,似乎任何其他值意味着,上述向GetRibbonMetric
通话不会发生(见TCustomRibbon.Create
上面提到的) ,并且调用GetSystemMetric
的奇怪结果导致将错误值26
另存为“其他值”。奇怪的;将更新AM中的QC。
附录:更新的质量控制报告,包含更多详细信息。
附录:2012年5月质检报告opened,但自XE5 Update 1(2014年1月检查)未看到解决。
听起来很奇怪。我只是做了你所描述的,而且表现完美。 –
雅,我有点认为这将是大多数人的情况,因为我在演示工作中看到它!但是,它不适合我。它几乎就像我有一个有缺陷的版本的德尔福2010年。我做了一个完整的卸载和重新安装德尔福2010年,它仍然是以同样的方式 – IElite
我从来没有见过这种情况发生之前,它不应该这样做。 – 2011-12-07 23:10:10