如何使禁用的控件保持不透明?

BIB*_*IBD 3 delphi firemonkey delphi-xe8

我注意到,当我禁用控件 ( controlName.enabled := false;) 时,它们会自动变为半透明。

有什么办法可以迫使他们保持不透明吗?

我已经尝试过了controlName.Opacity := 1;,但这似乎没有任何作用。

我还尝试将控件嵌入到 TLayout 中,然后禁用 TLayout,但半透明似乎是由嵌入式控件拾取的。

[编辑]

这是我所看到的一个示例,在本例中,它覆盖了包含大国会大厦 F 的 TLabel。

在此输入图像描述

r_j*_*r_j 5

将您的控件(TRectangle)设置为hittest := false;

它将不再捕获鼠标事件,而父控件将会捕获。对于其他控件,您可以将其与 结合使用Tabstop:=false。现在它不会获得焦点,因此大多数功能将被禁用。


r_j*_*r_j 5

您可以将其设置DisabledOpacity为 1。

请参阅将两个按钮添加到表单的示例:

procedure TForm2.Button2Click(Sender: TObject);
begin
  Button1.DisabledOpacity := 1;
  Button1.Enabled := not Button1.Enabled;
end;
Run Code Online (Sandbox Code Playgroud)

这是一个受保护的成员,因此您必须覆盖代码中的控件。

 TButton = class(FMX.Stdctrls.TButton)
 //
  end;

  TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Run Code Online (Sandbox Code Playgroud)