Delphi 在FireMonkey中创建图像按钮

Delphi 在FireMonkey中创建图像按钮,delphi,firemonkey,Delphi,Firemonkey,适用于XE6、Firemonkey 我通过在firemonkey中定制一个TSpeedButton来创建一个带有图像的按钮。我通过在样式编辑器中的TSpeedButton中添加一个图像来实现这一点。新按钮工作正常。我现在想制作另一个图像按钮,所以我想复制并粘贴表单上的第一个按钮。我在复制的按钮中更改了图像(通过样式编辑器),当我点击“应用并关闭”按钮时,新按钮将获得新图像。然而,我也注意到,我复制的原始按钮也得到了新的图像。所以现在我有两个按钮,图像相同。除了创建一个全新的按钮并添加一个新的图像

适用于XE6、Firemonkey

我通过在firemonkey中定制一个TSpeedButton来创建一个带有图像的按钮。我通过在样式编辑器中的TSpeedButton中添加一个图像来实现这一点。新按钮工作正常。我现在想制作另一个图像按钮,所以我想复制并粘贴表单上的第一个按钮。我在复制的按钮中更改了图像(通过样式编辑器),当我点击“应用并关闭”按钮时,新按钮将获得新图像。然而,我也注意到,我复制的原始按钮也得到了新的图像。所以现在我有两个按钮,图像相同。除了创建一个全新的按钮并添加一个新的图像(这确实允许我使用具有唯一图像的按钮),还有没有其他方法可以使用“复制/粘贴”创建具有自己样式的按钮


我注意到这个问题与有关,但在这里我想从IDE做同样的事情,而不是通过编程。这是一个资源的消费者,但他们可以按照您的需要工作

1-在表单上放置一个t快速按钮

2-在表单上放置一个TImage控件

3-使用结构视图(与表单设计器相反),将Image1组件放到SpeedButton1组件上,使TSpeedButton属于Image1的所有者

3-现在调整图像1的尺寸,使其与SpeedButton相同

4-在结构视图上,您必须再次选择图像1并将其展开。它似乎是一个MultiResBitMap拥有的组件

5-也展开此组件:MultiResBitmap。它显示一个名为“0-正常(1000)”的TFixedBitmapItem

6-在对象输入器上单击其属性位图的(…)

现在,您可以复制此结构,基于一个速度按钮,并更改每个按钮的位图


7-提示!!!您必须将图像的HitTest设置为False,并将按钮的相同属性设置为True。在其他情况下,它们似乎不会触发SpeedButton的事件处理程序。

它们存在其他方法。这是资源的消耗者,但它们可以按照您的需要工作

1-在表单上放置一个t快速按钮

2-在表单上放置一个TImage控件

3-使用结构视图(与表单设计器相反),将Image1组件放到SpeedButton1组件上,使TSpeedButton属于Image1的所有者

3-现在调整图像1的尺寸,使其与SpeedButton相同

4-在结构视图上,您必须再次选择Image1并将其展开。它显示为MultiResBitMap拥有的组件

5-也展开此组件:MultiResBitmap。它显示一个名为“0-正常(1000)”的TFixedBitmapItem

6-在对象输入器上单击其属性位图的(…)

现在,您可以复制此结构,基于一个速度按钮,并更改每个按钮的位图


7-提示!!!必须将图像的HitTest设置为False,并将按钮的相同属性设置为True。在另一种情况下,SpeedButton的事件处理程序似乎不会触发

我想我找到了答案:1:创建带有图像的按钮;2) 复制粘贴按钮;3) 在第二个按钮的属性编辑器中,将StyleLookup名称的名称更改为新名称。这似乎为复制的按钮创建了新样式。第一次尝试时,我在样式编辑器中得到了一些额外的样式(名称重复),我无法删除或选择这些样式,因此我必须删除所有按钮,然后重试。除非有更好的答案,否则我会在24小时内将此评论推广为答案。我注意到上述方法的一个问题,它否定了处理按钮的整个要点。更改样式名称时,按钮将丢失所有以前的样式信息,这意味着必须重新设计按钮。这不可能是这样做的。你不能简单地将图像控件作为子控件添加到按钮中吗?样式不应该包含图像。使用样式对同一类型的多个组件进行个性化处理是一种非常低效的方法,因为它从来没有被设计用于这样的目的。@Rabbe:你的意思是在样式编辑器中添加子项还是在运行时以编程方式添加子项?我想我已经解决了:1:创建带有图像的按钮;2) 复制粘贴按钮;3) 在第二个按钮的属性编辑器中,将StyleLookup名称的名称更改为新名称。这似乎为复制的按钮创建了新样式。第一次尝试时,我在样式编辑器中得到了一些额外的样式(名称重复),我无法删除或选择这些样式,因此我必须删除所有按钮,然后重试。除非有更好的答案,否则我会在24小时内将此评论推广为答案。我注意到上述方法的一个问题,它否定了处理按钮的整个要点。更改样式名称时,按钮将丢失所有以前的样式信息,这意味着必须重新设计按钮。这不可能是这样做的。你不能简单地将图像控件作为子控件添加到按钮中吗?样式不应该包含图像。使用样式对同一类型的多个组件进行个性化处理是一种非常低效的方法,因为它从来没有被设计用于这样的目的。@Rabbe:你的意思是在样式编辑器中添加子项还是在运行时以编程方式添加子项?我尝试过这个方法,但似乎不起作用。当我在结构视图中将timage移到speedbutton上时,timage如您所预测的那样成为speedbutton的子项,但它没有在表单上移动。timage和speedbutton在视觉上是分开的。好吧,我想我明白你的意思,也把timage向前移动