2

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

4

3 回答 3

3

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

于 2015-05-28T20:50:55.350 回答
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;
于 2015-05-30T02:49:57.333 回答
0

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

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

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

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

谢谢你们俩。

于 2015-06-03T05:57:27.820 回答