在Delphi XE2 FireMonkey中 - 如何在按下按钮后更改按钮的颜色

时间:2011-11-08 16:13:55

标签: delphi firemonkey

我只想在按下按钮后更改按钮的颜色。

我是否必须使用“样式”来执行此操作或....?

2 个答案:

答案 0 :(得分:6)

您可以更改button.StyleLookup属性以更改样式(颜色)。

您需要为样式簿添加新样式。

  1. 从鼠标右键菜单中选择“编辑自定义样式...”。
  2. 从背景:TRectangle
  3. 下的TRectangle项目更改Fill.Color属性
  4. 应用并关闭Stylebook
  5. 清除button.stylelookup
  6. 如果您没有更改名称Button1Style1
  7. ,请将按钮中的button.stylelookup更改为新的创建样式

答案 1 :(得分:1)

使用样式

创建不同样式并切换到新样式的另一种方法是为按钮创建自定义样式,并在运行时更改该样式的颜色。

  1. 右键单击按钮,然后从主菜单中选择“编辑自定义样式...”。
  2. 在样式编辑器中单击“应用并关闭”。
  3. 您刚刚为按钮创建了自定义样式。因此,当您在运行时编辑它时,它只会影响该按钮。

    现在,在OnClick事件中输入以下内容以在运行时更改颜色:

      var
        r: TRectangle;
      begin
        // Find the background TRectangle style element for the button
        r := (Button1.FindStyleResource('background') as TRectangle);
        if Assigned(r) then
        begin
          r.Fill.Color := claBlue;
        end;
      end;
    

    注意:如果您还没有FMX.Objects,请将其添加到您的uses子句中。那是TRectangle的所在。

    但等等......

    当鼠标离开或进入按钮时,您会注意到按钮的颜色会变回默认值。这是由于动画。如果在样式编辑器中为自定义样式设置了两个TColorAnimation样式元素的stylename属性,则还可以在这些样式上设置颜色。在我的例子中,我已经命名了TColorAnimations coloranimation1和coloranimation2。

    以下是修订后的代码:

    var
      r: TRectangle;
      ca: TColorAnimation;
    begin
      // Find the background TRectangle style element for the button
      r := (Button1.FindStyleResource('background') as TRectangle);
      if Assigned(r) then
      begin
        r.Fill.Color := claBlue;
      end;
      ca := (Button1.FindStyleResource('coloranimation1') as TColorAnimation);
      if Assigned(ca) then
      begin
        ca.StartValue := claBlue;
      end;
      ca := (Button1.FindStyleResource('coloranimation2') as TColorAnimation);
      if Assigned(ca) then
      begin
        ca.StopValue := claBlue;
      end;
    

    注意:将FMX.Ani添加到TColorAnimation的uses子句中。