2012-01-08 48 views
1

我有一个应用程序有一个TEdit,它在应用程序运行时被禁用。经过一些计算后,它将被启用。我的要求是将此禁用的Font.Color设置为灰色(禁用字体颜色)。已禁用TEdit字体颜色

回答

3

见彼得下面是在这个link完成你对托里的德尔福页面客观两个建议。从你对谷歌搜索引擎的评论来看,他的第一个建议对你来说会更简单。删除一个TPanel窗体上并拖动一个TEDIT到TPanel(即TPanel是TEDIT的父母,然后在表单上放一个按钮,模拟当你计算完成。

procedure TForm1.btnToggleEnabledClick(Sender: TObject); 
begin 
    if Panel1.Enabled then 
    begin 
    {Calcs are not done, so disable the TEdit} 
    Panel1.Enabled := false; 
    Edit1.Font.Color := clBlue; 
    Edit1.Text := 'Calcs not done'; 
    end 
    else 
    begin 
    {Calcs are done, so enable the TEdit} 
    Panel1.Enabled := true; 
    Edit1.Font.Color := clWindowText; 
    Edit1.Text := 'Calcs all done'; 
    end; 
end; 
5

标准TEdit不支持此功能。您可以将编辑设置为ReadOnly而不是Disabled - 这样,字体颜色将保留,但用户无法更改编辑的值。即“禁用”编辑

Edit1.ReadOnly := True; 
Edit1.Font.Color := clBlue; 

,并再次启用它

Edit1.ReadOnly := False; 
Edit1.Font.Color := clWindowText; 
+0

我只需要设置功能已停用TEDIT字体颜色可能是只读或不是我用谷歌搜索了一些解决方案,但对我来说不能理解 – 2012-01-08 08:45:38

+0

将TEdit.Enabled属性设置为False隐含地使编辑字段对用户是只读的,当'TEdit.ReadOnly'属性实现相同的效果时,不需要使用'TEdit.Enabled'属性。我在我的应用程序中始终使用这种方法,它工作正常。我甚至通过更改无论何时更改“TEdit.ReadOnly”属性,都可以“TEdit.Color”属性,以便用户可以直观地看到编辑字段已被禁用“,例如:'Edit1.Color:= clBtnFace; Edit1.ReadOnly:= True;'和'Edit1.Color:= clWindow; Edit1.ReadOnly:= False;' – 2012-01-09 02:17:39