有没有办法让TMemo的背景透明化?我尝试将不透明度从1降低到0并且整个组件(包括文本)逐渐淡化然后在0处完全消失。在0.1时,背景框仍然可见。我目前正在使用XE8 for iOS 8.3。
答案 0 :(得分:2)
由于TMemo
是TStyledControl
,您需要更改其样式才能使背景透明。为此,请右键单击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。
这两个答案都是很好的替代解决方案。
感谢你们俩。