TRibbon 不显示选项卡

2024-03-12

我在 64 位 Windows 计算机 (Win 7) 和 32 位 Windows 计算机 (XP) 上运行 Delphi 2010。

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

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

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

我在运行 Windows Xp 和 Delphi 2010 的 Win 32 笔记本电脑上尝试了同样的操作,并得到了完全相同的结果

这是我机器上的样子

这是演示中的样子

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


我终于在启用了 Aero 的 Win7 64 上的 Delphi XE(更新 1)中重现了该问题。似乎 .DFM 文件中的大小设置错误,并且因为Ribbon不支持手动调整大小,您无法在 IDE 中直观地修复它(尽管它在运行时正确显示) 或在Object Inspector。它偶尔会在运行时正确显示,但似乎也是零星的。

这是一个令人讨厌的错误,因为它使得设计Ribbon。你可以加RibbonGroup项,并分配ActionManager,并尝试完全使用Structure Pane,但这当然不是一个实际的解决方案。

幸运的是,有一个非常简单的解决方法,尽管必须这样做很烦人。 :)罢工>

我两次设法让以下解决方法发挥作用,但重新开始它多次失败,因此这是一种可能的解决方法(没有承诺 - 在 XE 中有效,在 XE2 Update 2 中始终失败):

  • 右键单击Ribbon并添加至少一个选项卡。
  • 右键单击 IDE 中的表单,然后选择View as Text从上下文(弹出)菜单。
  • 找出Ribbon控制在.dfm文本,并更改Height来自26IDE 分配给200。 (下一步会调整它,但没关系 -200解决了眼前的问题。)
  • 再次右键单击,然后选择View as Form,以及Ribbon应正确显示。

(我在 QC 中针对 XE2 Update 2 报告了该问题,因为该问题也存在 -质量控制#101642 http://qc.embarcadero.com/wc/qcmain.aspx?d=101642)

我追踪到TCustomRibbon.GetCaptionHeight, 具体来说

FCaptionHeight := Max(GetSystemMetrics(SM_CYCAPTION), 26);

似乎是GetSystemMetrics调用返回的值小于26在某些 Win7 配置上(虽然我还不知道为什么)。该方法中有几行注释似乎会改变结果,但正如我所说,它们已被注释掉。

奇怪的部分是在TCustomRibbon.Create, the Height通过调用来设置GetRibbonMetric(rmFullHeight),这设置了Result := cRibbonHeight + GetCaptionHeight;, and cRibbonHeight是一个常数,定义为cRibbonHeight = 117;.

最后我想我已经找到了这个。在声明中TRibbon, 有一个published财产申报:

published
   ...
  property Height default TCustomRibbon.cRibbonHeight;

因为这是默认值,所以任何其他值似乎都意味着调用GetRibbonMetric上面提到的情况不会发生(参见TCustomRibbon.Create上面提到的),以及调用的奇怪结果GetSystemMetric导致错误值26保存为“其他值”。奇怪;将在上午更新 QC。

附录:更新了 QC 报告并提供了更多详细信息。

附录:质量控制报告opened http://qc.embarcadero.com/wc/qcmain.aspx?d=1016422012 年 5 月,但截至 XE5 Update 1 似乎尚未解决(2014 年 1 月检查)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TRibbon 不显示选项卡 的相关文章

  • Delphi:MDI应用程序中的最大化子窗体

    如何最大化仅适合客户区而不适合整个父窗口的子窗口 我不希望子窗口在父窗口的主菜单或其他控件下消失 我有这个代码 procedure WMSIZE var Msg TMessage message WM SIZE procedure TFor
  • Delphi 拼写检查器

    您好 我正在寻找一个与 Delphi 7 2010 一起使用的免费拼写检查器 任何人都可以给我一个指向吗 我想添加我们在 SynProject 编辑器中使用的 HunSpell 库 它包含在该 GPL 工具的源代码中 http synops
  • Delphi 远程调试器冻结

    我有运行 Delphi 2007 应用程序的 Windows Server 2008 R2 计算机 Update 当前无法切换 Delphi 版本 我有 Delphi XE 但在进行任何切换之前需要检查超过 300 000 行代码 我遇到了
  • Delphi预定义环境变量

    谁能告诉我在哪里可以找到 RAD Studio 中可用的 伪 环境变量列表 例如 Platform Config 等 具体来说 我想要一个能够为我提供 RTL 版本的版本 以便我可以将编译单元 dcu 放入正确的目录中 即 XE为D15 X
  • 读写文本文件的最佳方法

    我正在使用最新版本的 Lazarus IDE 并且我有一个Memo1在我的 TForm1 上 我必须加载一个文本文件Memo1然后编辑备忘录的每一行 我使用Memo1 Lines Strings i 最后 我必须将编辑后的备忘录保存在特定路
  • 新的 Delphi Rad Studio XE2 中的 FireMonkey (FMX) 包含哪些功能的详细信息?

    我听说德尔福全新 Rad Studio XE2有一个东西叫做火猴这将允许相同的代码构建 Windows 32 Windows 64 和MacOS应用程序 如果这是真的 那么这是巨大的 在哪里可以获得有关 FireMonkey 的技术文档 E
  • 我可以访问 TBits 内部位图吗?

    In particular i want to preset desired size fetch a bitmap from external source and then work with data in classy object
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • 在设计时存储“记录数组”的最佳方式

    我需要在设计时存储一组数据 以便在运行时构造一组组件的内容 像这样的事情 type TVulnerabilityData record Vulnerability TVulnerability Name string Description
  • 如何隐藏 WebBrowser 直到网站完成加载/下载过程?

    我想知道我该如何隐藏WebBrowser直到网站加载过程完成 另外 我使用 Panel1 和WebBrowser在它的上面 为什么 好吧 这样 我可以完全像我想要的 WebBrowser 一样设置 Panel1 的大小和位置 然后将 Web
  • 开发 Delphi Windows 7 应用程序的规则 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到开发适用于 Windows 7 的 Delphi 应用程序时应遵循的最佳规则集 Marco 最近发表了 2 篇关于此主题的帖
  • 以与文件大小相同的格式获取类或对象的大小?

    如何从内存中最好地确定类的大小 这是一个可以使用的基本示例类 请注意 这些变量除了用于示例之外没有其他用途 type TMyClass class public fString1 string fString2 string fIntege
  • 启动时系统托盘图标不出现

    我在 FormCreate 事件处理程序中使用以下代码来创建系统托盘图标 当我运行程序时 系统托盘图标显示正常 我将应用程序设置为在 Windows 启动时自动启动 当我重新启动计算机时 我的应用程序进程已启动 但系统托盘图标从未出现 我认
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • 如何正确实现TBitmap的扫描线访问?

    我正在尝试根据以下方式访问位图的扫描线关于内河码头的文章 http edn embarcadero com article 29173 使用像这样的扫描线 for y 0 to n do begin line bitmap scanline
  • iOS Objective-C 对象:何时使用release,何时不使用它

    我在 iOS 下 正在使用 delphi Tokyo 进行开发 这是我的代码 aUIImage TUIImage Wrap TUIImage alloc initWithCGImage aCGImageRef try aData TNSDa
  • FreeMM 与 ShareMem

    我们有很多用 delphi 和 c builder 编写的 dll 库 并使用 sharemem 和 borlndmm dll 3d party 库中的对齐问题迫使我们转向 delphi 2007 中的新内存管理器 有人可以帮我解释一下 共
  • Delphi - 将字符串从 UTF-8 转换回来

    我在将 UTF 8 编码字符串转换回 delphi 可用的字符串时遇到问题 该应用程序是用 XE8 编写的 并部署在 Windows 和 OSX 上 该应用程序分别在 Windows 和 OSX 上使用 LimeLM API dll 和 d
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 获取字符、整数和日期字段的字段 oldValue 和 newValue

    我试图只保留表更改的历史记录 所以我想获取一个字段在更改为oldValue之前的值 然后获取它更改为newValue的值 两个值都应转换为字符串 因此 这是该表的一个示例 PartNumber Description 12345 Test

随机推荐