【发布时间】:2012-01-08 08:08:39
【问题描述】:
我有一个应用程序有一个TEdit,它在应用程序运行时被禁用。经过一些计算后,它将被启用。我的要求是将这个禁用的TEdit 的Font.Color 设置为蓝色而不是灰色(禁用字体颜色)。
【问题讨论】:
标签: delphi delphi-xe2
我有一个应用程序有一个TEdit,它在应用程序运行时被禁用。经过一些计算后,它将被启用。我的要求是将这个禁用的TEdit 的Font.Color 设置为蓝色而不是灰色(禁用字体颜色)。
【问题讨论】:
标签: delphi delphi-xe2
标准TEdit 不支持此功能。您可以将编辑设置为 ReadOnly 而不是 Disabled - 这样可以保留字体颜色,但用户无法更改编辑的值。即“禁用”编辑
Edit1.ReadOnly := True;
Edit1.Font.Color := clBlue;
并再次启用它
Edit1.ReadOnly := False;
Edit1.Font.Color := clWindowText;
【讨论】:
TEdit.Enabled 属性设置为False 隐式地使编辑字段对用户只读。所以当TEdit.ReadOnly 属性达到同样的效果时,真的没有必要使用TEdit.Enabled 属性。我一直在我的应用程序中使用这种方法,效果很好。我什至更进一步,每当我更改TEdit.ReadOnly 属性时更改TEdit.Color 属性,以便用户可以直观地看到编辑字段已被“禁用”,例如:Edit1.Color := clBtnFace; Edit1.ReadOnly := True; 和Edit1.Color := clWindow; Edit1.ReadOnly := False;
在link 上查看 Peter 下面关于在 Torry 的 Delphi 页面上实现您的目标的两个建议。从您对 Google 搜索内容的评论来看,他的第一个建议对您来说实施起来会更简单。将 TPanel 拖放到窗体上并将 TEdit 拖到 TPanel 上(即,TPanel 是 TEdit 的父级。然后在窗体上拖放一个 Button 以模拟何时完成计算。
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;
【讨论】: