使用VCLStyles设置禁用控件的字体颜色?

时间:2018-04-23 11:06:00

标签: delphi vcl-styles

在Delphi应用程序中使用较暗的样式时,很难看到禁用的文本,它被设置为深灰色,我无法将其设置为更实用的颜色。我可以在样式编辑器中设置它,但在运行应用程序时不会使用它。有没有其他人遇到这种行为,并能够解决它?

UPDATE:当我使用样式挂钩时,即使我实际将颜色设置为不同的颜色,颜色仍会设置为灰色。

procedure TEditStyleHookColor.UpdateColors;
var
  LStyle: TCustomStyleServices;
begin
  LStyle := StyleServices;

  if Control.Enabled then
  begin
    Brush.Color := LStyle.GetStyleColor(scEdit);
    FontColor := LStyle.GetStyleFontColor(sfEditBoxTextNormal);
  end
  else
  begin
    Brush.Color := LStyle.GetStyleColor(scEditDisabled);
    FontColor   :=  clWhite; //TWinControlClass(Control).Font.Color;
  end;
end;

Example

UPDATE2

样式编辑器还会显示“错误”字体,如本例所示。

enter image description here

1 个答案:

答案 0 :(得分:1)

我怀疑这与VCL样式无关,只与Windows / Delphi默认绘制的禁用控件有关。

表示您有两个选择,如SwissDelphiCenter上所述:

  

1)将控件放在面板上并禁用面板而不是面板   控制。这样颜色就可以保持你设置的颜色。

     

2)做一个后代并在禁用时接管绘画。

我很快尝试了第一次,效果很好。

您也可以进行只读编辑,这与禁用它不同,但它通常足够,并且具有让您选择和复制编辑内容的优势。