2011-12-07 157 views
7

我在64位Windows机器(Win 7)和32位Windows机器(XP)上运行Delphi 2010。TRibbon不显示标签

我在学习如何使用TRibbon控件。

我一直在关注Marco Cantu的2009年手册中的示例并观看YouTube演示,但是我的控制功能不像在本书或演示中所解释的那样工作。

我添加了两个选项卡,通过右键单击该控件。然而,当我将它放在主窗体上时,TRibbon看起来与截图中的完全一样。它不像书籍或YouTube上的演示那么高。

我试图在我运行Windows XP和Delphi 2010 WIN 32笔记本同样的事情,得到同样的结果

这里是什么样子

64 bit laptop screenshot

这里我的机器上是它是假设看起来像一个演示

from youtube video demo

一旦再次。当它放在窗体上时,它不会像我在演示中看到的那样形状和高度。即使当我添加标签。在我的Delphi 2010安装过程中,我做错了什么?

+2

听起来很奇怪。我只是做了你所描述的,而且表现完美。 –

+0

雅,我有点认为这将是大多数人的情况,因为我在演示工作中看到它!但是,它不适合我。它几乎就像我有一个有缺陷的版本的德尔福2010年。我做了一个完整的卸载和重新安装德尔福2010年,它仍然是以同样的方式 – IElite

+0

我从来没有见过这种情况发生之前,它不应该这样做。 – 2011-12-07 23:10:10

回答

8

我终于在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控件,并将Height26更改为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月检查)未看到解决。