我在64位Windows机器(Win 7)和32位Windows机器(XP)上运行Delphi 2010。
我正在尝试学习如何使用TRibbon控件。
我一直在关注Marco Cantu的2009年手册中的例子并观看YouTube演示,但我的控制并没有像书中所解释的那样或者演示。
我通过右键单击控件添加了两个选项卡。然而,当我将它放在主窗体上时,它与我的截图中的TRibbon完全一样。它没有书本或youtube演示中那么高。
我在运行Windows Xp和Delphi 2010的Win 32笔记本电脑上尝试了相同的操作并得到了完全相同的结果
这是我机器上的样子
这是在演示中看起来像是什么
再一次。当它放在表格上时,它不会像我在演示中看到的那样形状和高度。即使我添加标签。在我的Delphi 2010安装过程中,我做错了什么?
答案 0 :(得分:8)
我终于在Win7 64上启用了Aero,在Delphi XE(Update 1)中重现了这个问题。似乎.DFM文件中的大小设置错误,并且因为Ribbon
不支持手动调整大小,所以无法在IDE 中直观地修复它(尽管它在运行时正确显示)< / strike>或Object Inspector
。它偶尔会在运行时正确显示,但似乎也是零星的。
这是一个讨厌的错误,因为它无法设计Ribbon
。您可以添加RibbonGroup
项,并分配ActionManager
,然后尝试使用Structure Pane
完全设计它,但当然这不是一个实用的解决方案。
幸运的是,有一个非常简单的解决方法,虽然这很烦人。 :)击>
我管理了两次以获得以下解决方法来运行,但是重新启动它无法多次工作,所以这是一种可能的解决方法(没有承诺 - 在XE中工作,在XE2 Update 2中始终失败):
Ribbon
并添加至少一个标签。View as Text
。 Ribbon
文本中找到.dfm
控件,并将Height
从IDE分配给26
的{{1}}更改为200
。 (下一步将调整它,但没关系 - 200
解决了眼前的问题。)View as Form
,Ribbon
应正确显示。(我在QC中针对XE2 Update 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
会导致错误值{{1}}保存为“其他值”。奇怪的;将更新AM中的质量控制。
附录:更新质量控制报告及其他详细信息。
附录:2012年5月质量控制报告opened,但从XE5 Update 1(2014年1月检查)开始,似乎没有得到解决。