有没有办法让 TMemo 的背景透明?我尝试将不透明度设置为从 1 到 0,整个组件(包括文本)逐渐消失,然后在 0 处完全消失。在 0.1 时,背景框仍然可见。我目前正在为 iOS 8.3 使用 XE8。
3 回答
由于TMemo
是 a TStyledControl
,您需要更改其样式以使背景透明。为此,请右键单击TMemo
并选择“编辑自定义样式”。这将打开样式编辑器。寻找MemoStyle1
. 作为一个孩子,你会发现类型的背景TActiveStyleObject
。将 TLayout(备忘录背景始终是透明的)或例如 TRectangle(对颜色和透明度进行更多控制)添加到 MemoStyle1。将添加的 TLayout(或 TRectangle)对齐属性更改为contents
并将其StyleName
属性设置为“背景”。现在从原始背景中拖动所有孩子TActiveStyleObject
进入你的新背景。现在删除原始背景。注意:要在样式编辑器中删除对象,您需要选择对象,然后使用样式列表顶部的删除按钮。单击样式编辑器右上角的应用并关闭,您应该会在备忘录上看到效果。
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;
我已经测试了来自 iamjoosy 和 DanielH 的 2 个帖子。他们都适用于 iOS 8.3 和 Android 5.02
对于代码解决方案,只需将其插入要使其背景透明的 TMemo 的 OnApplyStyleLookup 事件处理程序中。我将 TMemo 的 StyleLookup 属性留空。
XE4 以前有一个代码解决方案,但它对我不起作用,因为它测试资源对象是否是 TSubImage 而不是 TActiveStyleObject。
这两个答案都是很好的替代解决方案。
谢谢你们俩。