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