由于OrangeUI特殊的原因,

SelfOwnMaterial的类型默认是TSkinControlMaterial

TSkinControlMaterial是素材的基类型,

拥有BackColorIsTransparent两个重要的属性,

每个控件都有自己类型的SelfOwnMaterial,

比如按钮默认的SelfOwnMaterial实际的类型是TSkinButtonDefaultMaterial,

TSkinButtonDefaultMaterial的继承关系为:

TSkinButtonDefaultMaterial->TSkinButtonMaterial->TSkinControlMaterial,

因此要在代码中设置控件的素材,

需要使用控件的SelfOwnMaterialToDefault属性,

SelfOwnMaterial转换为TSkinButtonDefaultMaterial类型,

 

比如我要设置按钮的背景色为白色:

Button.SelfOwnMaterialToDefault.BackColor.FillColor.Color:=TAlphaColorRec.White;

 

举例:

在窗体上拖一个FMXButton,

在按钮的点击事件中,写上如下代码:

procedure TFrameSetBackColor.btnSetColorByCodeClick(Sender: TObject);

begin

 

  SkinFMXButton3.Caption:='我是代码设置的按钮';

 

  //设置按钮为不透明

  SkinFMXButton3.SelfOwnMaterialToDefault.IsTransparent:=False;

  //按钮背景颜色填充

  SkinFMXButton3.SelfOwnMaterialToDefault.BackColor.IsFill:=True;

  //设置为圆角

  SkinFMXButton3.SelfOwnMaterialToDefault.BackColor.IsRound:=True;

  //按钮背景颜色设置为蓝色

  SkinFMXButton3.SelfOwnMaterialToDefault.BackColor.FillColor.Color:=TAlphaColorRec.Cornflowerblue;

  //按钮背景颜色鼠标点击效果

  SkinFMXButton3.SelfOwnMaterialToDefault.BackColor.DrawEffectSetting.MouseDownEffect.CommonEffectTypes

              :=[dpcetAlphaChange];

  //按钮标题字体设置为白色

  SkinFMXButton3.SelfOwnMaterialToDefault.DrawCaptionParam.FontColor:=TAlphaColorRec.White;

  SkinFMXButton3.SelfOwnMaterialToDefault.DrawCaptionParam.FontSize:=14;

  //按钮标题垂直居中

  SkinFMXButton3.SelfOwnMaterialToDefault.DrawCaptionParam.FontVertAlign:=TFontVertAlign.fvaCenter;

  //按钮标题水平居中

  SkinFMXButton3.SelfOwnMaterialToDefault.DrawCaptionParam.FontHorzAlign:=TFontHorzAlign.fhaCenter;

  //按钮标题鼠标点击效果

  SkinFMXButton3.SelfOwnMaterialToDefault.DrawCaptionParam.DrawEffectSetting.MouseDownEffect.CommonEffectTypes

              :=[dpcetAlphaChange];

 

end;

 

然后我们运行这个示例:

点击按钮看一下效果:

看,按钮的素材都设置好了,