【发布时间】:2014-08-22 17:43:58
【问题描述】:
适用于 XE6、Firemonkey
我正在通过在 firemonkey 中自定义 TSpeedButton 来创建一个带有图像的按钮。我通过在样式编辑器中将图像添加到 TSpeedButton 来做到这一点。新按钮工作正常。我现在想制作另一个图像按钮,所以我想我会复制并粘贴表单上的第一个按钮。我更改了复制按钮中的图像(通过样式编辑器),当我点击应用并关闭时,新按钮会获取新图像。但是我也注意到我复制的原始按钮也得到了新图像。所以现在我有两个具有相同图像的按钮。除了创建一个全新的按钮并添加一个新图像(这确实允许我拥有具有独特图像的按钮)之外,有没有一种方法可以使用复制/粘贴来创建具有自己风格的按钮?
我注意到这个问题与How to edit a control within a FireMonkey style outside of the style designer? 有关,但在这里我想做同样的事情,但从 IDE 中,而不是通过编程方式。
【问题讨论】:
-
我想我想通了: 1:创建带有图像的按钮; 2)复制粘贴按钮; 3) 在第二个按钮的属性编辑器中,将 StyleLookup 名称更改为新名称。这似乎为复制的按钮创建了一种新样式。我第一次尝试这个时,我在样式编辑器中得到了一些额外的样式(具有重复的名称),我无法删除或选择这些样式,因此我不得不删除所有按钮并重试。除非有更好的答案,否则我会在 24 小时内将此评论推广为答案。
-
我注意到上述方法的一个问题,它否定了处理按钮的全部意义。当您更改样式的名称时,按钮会丢失所有以前的样式信息,这意味着必须重新设计按钮。这不可能。
-
您不能简单地将图像控件作为子项添加到按钮中吗?样式不应该包含图像。
-
使用样式来个性化同一类型的多个组件是一种非常低效的做事方式,因为它从来没有为这样的目的而设计。
-
@Rabbe:您的意思是在样式编辑器中添加子元素还是在运行时以编程方式添加子元素?
标签: delphi firemonkey