我注意到當我禁用控件(controlName.enabled := false;
)時,它們會自動變爲半透明。如何讓我禁用的控件不透明?
有沒有辦法強制他們保持不透明?
我試過controlName.Opacity := 1;
但這似乎沒有做任何事情。
我也嘗試在TLayout中嵌入控件,然後禁用TLayout,但半透明似乎被嵌入式控件拾取。
[編輯]
這裏就是我看到在這種情況下,它覆蓋了的TLabel包含一個大國會F.
我注意到當我禁用控件(controlName.enabled := false;
)時,它們會自動變爲半透明。如何讓我禁用的控件不透明?
有沒有辦法強制他們保持不透明?
我試過controlName.Opacity := 1;
但這似乎沒有做任何事情。
我也嘗試在TLayout中嵌入控件,然後禁用TLayout,但半透明似乎被嵌入式控件拾取。
[編輯]
這裏就是我看到在這種情況下,它覆蓋了的TLabel包含一個大國會F.
您可以添加到窗體兩個按鈕設置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;
設置你的控制(TRectangle)的一個例子hittest := false;
它將不再捕獲鼠標事件,並且父控件將會。 對於其他控件,您可以將它與Tabstop:=false
結合使用。現在它不會獲得焦點,因此大多數功能都將被禁用。
+1對於我的具體情況,這是一個更簡單的解決方案。另一個答案更好地回答了我原來的問題,所以得到了複選標記。謝謝你給我兩個。 – BIBD
DisabledOpacity是TControl的私有財產,您可以在FMX.Controls.TControl中找到它。
您可以創建一個自定義類的TControl的地方DisabledOpacity是公共並將其設置爲您的控件像(每TControl類後裔):
TmyC = class(TControl)
public
property DisabledOpacity;
end;
...
TmyC(Button1).DisabledOpacity := 1;
你爲什麼要這麼做?我想你可能需要在Firemonkey源代碼中搜索,以瞭解如何禁用影響繪畫,以覆蓋它。 –
小故事是我在表單上有一個TSplitter。手柄不會顯示在Android或iOS上。表示TSplitter在那裏給用戶。我已經添加了一個矩形作爲它的一個子項,然後設置它的顏色(似乎沒有辦法直接給TSplitter着色)。一旦將矩形添加到TSplitter,它不再有效(TRectangle截取點擊對於一些gawd未知的原因)。禁用TRectangle允許TSplitter再次工作;然而,當我滑動分離器(或根據你如何定位它),你可以看到你滑過的控件的鬼魂。 – BIBD
半透明?真?你可以看到他們背後有什麼? –