gpt4 book ai didi

delphi - 如何有效地让 `ParentFont = False` 子控件使用与父控件相同的字体名称?

转载 作者:行者123 更新时间:2023-12-02 10:05:47 25 4
gpt4 key购买 nike

大多数 VCL 控件都有 FontsParentFont 属性。设置 ParentFont = True 是一个很好的做法,字体将遵循其父字体的 NameHeightColor >。这使得控件之间具有统一的视觉效果。

但是,我们可能希望通过设置 Font.Style = fsBold 或对比 Font.Color 但使用相同的方式,使一两个控件具有与其他控件不同的外观Font.Name 作为父级的字体。这样做会使 ParentFont = false。从此时起,更改父控件的字体名称或大小将不会影响这些控件的字体属性。

我想这可能是VCL的设计。也许有人在字体和 ParentFont 问题上有更好的设计实践或经验可以分享。

考虑一种情况,我让用户为应用程序设置默认字体名称。这些 ParentFont = False 控件不会相应更改。手动覆盖编码是可能的,但引入额外的编码是一项乏味的工作。

最佳答案

这是已知的 VCL 限制。

您可以有 ParentFont或者您的自定义字体设置,在这种情况下,更改父级中的字体属性将不会被传播。

解决这个问题的最佳方法是使用 ParentFont = true并在运行时在表单的 OnCreate 中设置特定控件的自定义字体属性事件。当然,在这种情况下你会失去 What You See Is What You Get在设计时,但您可以更好地控制表单的实际运行时外观。

procedure TForm1.OnCreate(Sender: TObject);
begin
inherited;
Label1.Font.Style := [fsBold];
Label1.Font.Color := clRed;
end;

要应用用户自定义字体选择,您还需要重新创建表单,或使用 ParentFont := true在为特定控件应用自定义样式之前,它们会选择您的新字体设置。

关于delphi - 如何有效地让 `ParentFont = False` 子控件使用与父控件相同的字体名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34306195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com