【问题标题】:Firemonkey SpeedButton / ButtonFiremonkey SpeedButton / 按钮
【发布时间】:2026-02-02 15:20:03
【问题描述】:

在 Firemonkey 中,使按钮如下所示的“魔法”是什么?

对我来说,最重要的是图像的大小和按钮内文本的布局,但是如何在 firemonkey 中做到这一点?我必须配置哪些属性?这在 VCL 中非常容易。

我在 VCL 和 Firemonkey 中都使用了 speedbutton 和 imagelist。

我在处理这样简单的事情时遇到了麻烦:(

我什至不认为我必须在 firemonkey 中做一些更复杂的事情,几乎要回到 VCL,Sad。

谢谢。

【问题讨论】:

  • 从 VCL 迁移到 FMX 时,我也遇到了这个问题。我还想要一个非常具体的按钮外观。所以我最终将 TImage 作为 speedbutton 的子元素,并使用我想要的特定图像作为按钮。但是,如果您选择标准操作,则可以使用内置样式。对于移动应用程序,这当然是推荐的方式。

标签: delphi firemonkey delphi-xe firemonkey-style


【解决方案1】:

Firemonkey 具有出色的内置样式系统,甚至还有一个样式系统,其工作方式与常规 Firemonkey 或 VCL Form-Designer 完全相同。

每个组件都有自己的样式,它在 TStyleBook 组件中定义。 我建议您,只需将组件列表中的 TStyleBook 添加到您的表单并双击它。 Delphi/RAD Studio 将打开“样式设计器”,您可以在其中为您想要的每个组件设置默认样式。您还可以为同一组件定义自定义样式,因此您可以将常规 TSpeedButton 与包含额外 TImage 的自定义样式一起使用。要为 TSpeedButton 创建自定义样式,只需将 TSpeedButton 放在您的表单上并在其上按鼠标右键,然后按“编辑自定义样式”之类的东西。 (我的 RAD Studio 没有英文版)

要了解如何制作出色的视觉和自定义样式,您应该阅读 Emba 的文档。你可以在这里找到它们:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Customizing_FireMonkey_Applications_with_Styles(也可以看看下面的链接)

当然,学习它的最佳方法就是深入研究它。这一点都不难。 ;)

【讨论】:

    【解决方案2】:

    正如 Rohit 所说,最好的方法是在按钮附近放置一个 TImage,然后使用结构树视图将 TImage 拖到按钮下。将 TImage 的 HitTest 设置为 false,并与 Client 对齐。您的按钮将始终为 48x48,因此您可以在单击 TImage 的 MultiResBitmap 下的添加项目后使用位图按钮加载图像(假设它是 512x512)。

    如果你想让你的图片透明,我在http://www166.lunapic.com找到了一个很棒的在线编辑器Lunapic。

    【讨论】:

      【解决方案3】:

      除了其他答案,我建议您对每种视觉组件都使用 TRectangle。您可以一起使用 TRectangle、TImage 和 TLabel 创建一个新的自定义组件。或者您可以每次都在每个组件中一起使用它们。

      使用 TRectangle,您可以管理半径、角、描边、背景颜色等。您唯一需要知道的是,确保您的 TRectangle 组件的 HitTest 参数处于活动状态,而内部组件的(TImage 和 TLabel)参数处于不活动状态.

      【讨论】:

      • 使用 TRectangle 不会阻止使用,例如,连接到控件的 TAction?这将导致必须管理 Delphi 原生执行的一系列控件。