Delphi XE8 FireMonkey TMemo透明?

时间:2015-05-28 15:49:43

标签: delphi firemonkey delphi-xe8

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  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;

答案 2 :(得分:0)

我测试了iamjoosy和DanielH的2个帖子。 他们都适用于iOS 8.3和Android 5.02

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

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

这两个答案都是很好的替代解决方案。

感谢你们俩。