Delphi XE8 FireMonkey TMemo透明?

Delphi XE8 FireMonkey TMemo透明?,delphi,firemonkey,delphi-xe8,Delphi,Firemonkey,Delphi Xe8,有没有办法使TMemo的背景透明?我尝试将不透明度从1设置为0,整个组件(包括文本)逐渐淡出,然后在0处完全消失。0.1时,背景框仍然可见。我目前正在为iOS 8.3使用XE8。因为TMemo是一个TStyledControl您需要更改它的样式以使背景透明。为此,右键单击TMemo并选择“编辑自定义样式”。这将打开样式编辑器。查找备忘录样式1。作为一个孩子,你会发现一个tractivestyleobject类型的背景。在MemoStyle1中添加一个TLayout(备忘录背景将始终是透明的)或例

有没有办法使TMemo的背景透明?我尝试将不透明度从1设置为0,整个组件(包括文本)逐渐淡出,然后在0处完全消失。0.1时,背景框仍然可见。我目前正在为iOS 8.3使用XE8。

因为
TMemo
是一个
TStyledControl
您需要更改它的样式以使背景透明。为此,右键单击
TMemo
并选择“编辑自定义样式”。这将打开样式编辑器。查找
备忘录样式1
。作为一个孩子,你会发现一个
tractivestyleobject
类型的背景。在MemoStyle1中添加一个TLayout(备忘录背景将始终是透明的)或例如一个树状角(可以更好地控制颜色和透明度)。将添加的TLayout(或TRectangle)align属性更改为
contents
,并将其
StyleName
属性设置为“background”。现在,将所有子对象从原始背景中拖动到新背景中。现在删除原始背景。注意:要在样式编辑器中删除对象,需要选择对象,然后使用样式列表顶部的“删除”按钮。单击样式编辑器右上角的“应用并关闭”,您应该可以在备忘录上看到效果。

我已经测试了iamjoosy和DanielH的两篇文章。
  uses FMX.Styles.Objects;

procedure TForm1.Memo1ApplyStyleLookup(Sender: TObject);
  Var
  Obj: TFmxObject;
begin

  Obj := Memo1.FindStyleResource('background');

  if Assigned(Obj) And ( Obj is TActiveStyleObject ) Then
  TActiveStyleObject(Obj).Source := Nil;

end;
他们都为iOS 8.3和安卓5.02工作

对于代码解决方案,只需将其插入TMemo的OnApplyStyleLookup事件处理程序中,即可使其背景透明。我将TMemo的StyleLookup属性留空

以前有一个针对XE4的代码解决方案,但它对我不起作用,因为它测试资源对象是否是TSubImage而不是TactiveStyle对象

这两个答案都是好的替代方案


多亏了你们两位。

一般来说,如果答案中包含对代码意图的解释,以及在不介绍其他代码的情况下解决问题的原因,那么答案会更有帮助。(这篇文章至少有一个用户标记过,大概是因为他们认为应该删除没有解释的答案。)非常感谢!我也遇到了同样的问题,这对我来说非常合适,因为我想要一个有彩色背景的
tMemo