【问题标题】:Disabled TEdit Font Colour禁用 TEdit 字体颜色
【发布时间】:2012-01-08 08:08:39
【问题描述】:

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

【问题讨论】:

    标签: delphi delphi-xe2


    【解决方案1】:

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

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

    并再次启用它

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

    【讨论】:

    • 我只需要设置 Disbled TEdit Font Color 可以是 ReadOnly 也可以不是。我用 Google 搜索了一些解决方案,但我无法理解。
    • TEdit.Enabled 属性设置为False 隐式地使编辑字段对用户只读。所以当TEdit.ReadOnly 属性达到同样的效果时,真的没有必要使用TEdit.Enabled 属性。我一直在我的应用程序中使用这种方法,效果很好。我什至更进一步,每当我更改TEdit.ReadOnly 属性时更改TEdit.Color 属性,以便用户可以直观地看到编辑字段已被“禁用”,例如:Edit1.Color := clBtnFace; Edit1.ReadOnly := True;Edit1.Color := clWindow; Edit1.ReadOnly := False;
    【解决方案2】:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2019-09-09
      • 2010-12-28
      • 2011-09-05
      • 2021-06-27
      • 1970-01-01
      相关资源
      最近更新 更多