我注意到当我禁用控件(controlName.enabled := false;
)时,它们会自动变为半透明。
有没有办法可以让他们保持不透明?
我已经尝试controlName.Opacity := 1;
,但似乎没有做任何事情。
我也尝试在TLayout中嵌入控件,然后禁用TLayout,但是半透明似乎被嵌入式控件拾取。
[编辑]
这是我所看到的一个例子在这种情况下,它覆盖了一个包含大国会大厦F的TLabel。
答案 0 :(得分:4)
将您的控件(TRectangle)设置为hittest := false;
它将不再捕获鼠标事件,而父控件将会。
对于其他控件,您可以将其与Tabstop:=false
结合使用。现在它不会得到关注,因此大多数功能都将被禁用。
答案 1 :(得分:3)
您可以将DisabledOpacity
设置为1。
请参阅示例,其中有两个按钮添加到表单中:
procedure TForm2.Button2Click(Sender: TObject);
begin
Button1.DisabledOpacity := 1;
Button1.Enabled := not Button1.Enabled;
end;
这是受保护的成员,因此您必须覆盖代码中的控件。
TButton = class(FMX.Stdctrls.TButton)
//
end;
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
答案 2 :(得分:0)
DisabledOpacity是TControl的私有属性,您可以在FMX.Controls.TControl中找到它。
您可以创建一个自定义类的tcontrol,其中DisabledOpacity是公共的,并将其设置为您的控件,如(对每个TControl后代):
CategoricalArray