delphi - 创建功能区样式的应用程序

标签 delphi ribbon

使用标准的 Delphi TRibbon 组件,我发现它们并不是那么出色。

  • 首先,它们看起来不像 Microsoft 的那么漂亮,例如 TRibbon 中的发光效果和颜色看起来不像 Windows 7 中的写字板或画图中使用的那样令人印象深刻。

  • 其次,如果您想创建功能区样式界面,我注意到没有独立于 TRibbon 的功能区样式菜单或弹出菜单。对于实际的功能区,有,但如果出于连续性目的,您希望将功能区样式弹出菜单分配给 TListbox 或 TListView,例如,似乎没有。

  • 第三,有时当功能区操作被禁用时,即使它被禁用,它仍然会显示热发光效果,就像悬停在该操作上一样。

  • 最后,我发现尝试将 TCombobox 等容器组件放入一个组中非常繁琐。调整控件的大小和位置等确实很尴尬。

我想我的观点是,使用标准的 Delphi TRibbon 组件似乎不是视觉上和实用上的最佳方法。如何使功能区样式的应用程序看起来和工作起来像 Microsoft 的应用程序一样整洁,就像我之前所说的 Windows 7 中的写字板和画图一样?

看看这个比较屏幕截图以获得更好的想法:

enter image description here

Delphi 功能区似乎不完整,除非我期望太多。我相信功能区组件将为您的应用程序提供更好的最终用户体验,包括视觉效果和更好的工作空间等。

您可以提出哪些建议来增强 TRibbon 或使 TRibbon 正常工作并看起来像 Microsoft 的那样?

我并不总是使用功能区样式界面,因此购买第 3 方组件并不是我真正想做的事情。我看过 TMS 和 DevExpress,但就它们的价格而言,它们看起来也不那么好。 TMS 看起来比标准的 Delphi TRibbon 差。

最佳答案

要获得 native 外观和感觉,请查看 Windows Ribbon Framework for Delphi

这是一个关于 the Windows Ribbon Framework 的开源包装器自 Windows 7 起可用(以及安装某些官方更新后的 Vista)。这是 Windows 7 写字板使用的 API。

另请注意,您有两种布局:Office 2007 和 Office 2010。Delphi VCL Ribbon 实现 Office 2007 样式,而 Windows 7 写字板使用 Office 2010 样式。

在我们为一些客户提供的一些项目中,我们使用了 TMS software Ribbon components 。代码有点过大(有很多重复或写得不好的东西,比如组件持久性),但它工作和渲染得很好,支持 2007 和 2010 Ribbon 样式。对于我们的客户来说,渲染才是最重要的。对于我们的开源框架,we published a dual solution for building a Ribbon-like GUI ,从代码生成:它将使用标准 VCL 组件进行基本布局,或者使用 TMS 组件进行完整的 Office 2007/2010 渲染。我们刚刚定义了一些由任一库实现的类。如果您使用 SQLite3ToolBar 中定义的通用组件(即 TSynForm、TSynToolBar、TSynToolButton、TSynPopupMenu、TSynPage、TSynPager、TSynBodyPagerTSynBodyPage 类)和 SynTaskDialog (对于 TSynButton)在您自己的代码中,USETMSPACK 条件将为您发挥所有作用。

我们还没有使用 Delphi 2009 中引入的 Ribbon 组件。它的操作驱动设计并不容易与我们的用户界面处理的事件驱动设计进行交互,我们必须承认该组件的声誉相当差(至少在 Delphi 2009 版本中)。

Delphi 的出色 Windows 功能区框架无法满足我们对从代码即时生成功能区的需求。它的设计来自 Microsoft 实现本身,是从 XML 资源创建 UI,在编译时链接...因此它不适合我们的需求,但它可能适合您的需求,以实现更“静态”的应用程序 UI 设计。

如果您在应用程序中使用类似 Office 的功能区,请注意 Office UI Licensing .

关于delphi - 创建功能区样式的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327845/

相关文章:

html - 使用CSS制作功能区中心

html - 如何在没有两组滚动条的 HTML 页面顶部创建非滚动 div

delphi - 在 Delphi 10.1 Berlin 中手动安装帮助文件

delphi - 如何获取应用程序的运行时间?

xml - 有没有办法根据文件名中的字符串使用 VBA 和 XML 将按钮添加到 Office 2010 功能区?

c# - WPF 功能区 - 示例/开源应用程序

c# - WPF/RibbonGallery : Need help understanding binding and events

delphi - 如何保持多个项目的使用列表相同

delphi - Delphi 有加密安全的 PRNG 库吗?

delphi - 在 OpenGL 渲染上下文之上叠加图形