【问题标题】:How to set the application font at design time?如何在设计时设置应用程序字体?
【发布时间】:2020-02-15 04:03:46
【问题描述】:

我了解到have font-consistency through a project 的最集中方式是激活所有具有ParentFont 属性的控件并在运行时设置Application.DefaultFont

我想在设计时在整个应用程序中应用不同的字体,例如 'Segoe UI'

如何在设计时进行更改?

【问题讨论】:

  • Segoe UI 是一个很好的选择,因为这是 Microsoft Windows User Interface Guidelines 规定的。我确保在我创建的每个表单上设置此字体(然后它被该表单中的所有控件继承)。但不幸的是,我不知道您的问题的解决方案。
  • 当然,最好不要硬编码 Segoe UI,而是尊重 Windows 字体设置(>99% 的情况下将是 Segoe UI)。
  • @AndreasRejbrand 究竟什么是“Windows 字体设置”?可以在 Windows 哪里配置?
  • @dummzeuch:在 Windows 95-Windows 7 中,有一个对话框,Display Properties,带有一个标签 Appearance,您可以在其中自定义 Windows 环境中的所有颜色和字体。它可能不会出现在 Windows 8 及更高版本中(不要经常使用这些系统)。
  • @dummzeuch:我也很怀疑。但我不确定即使在 Windows 10 中也能保证系统字体是 Segoe UI。请参阅MSDN 的“如果你只做一件事”部分。尽管如此,我还是在我的应用程序中对 Segoe UI 进行了硬编码。

标签: delphi delphi-xe7


【解决方案1】:

您有多种选择,最适合您的可能取决于您的情况。

如果您使用自己的表单(不是来自包或库),那么您可以将每个表单设计为从父级继承,以按照 cmets 中的建议为您提供起始字体。但是 IDE 将允许对其进行更改,并且如果表单的 DFM 文件在派生表单中记录了字体,即使父类字体发生更改,它也会使用该字体。

另一种方法是编写一个可以拖放到表单上的非可视组件。当该组件具有其所有者集(在创建时)时,它可以检查它是否由表单拥有并在父级上设置字体。以同样的方式,它可以设置您想要的任何属性,它还可以找到它的所有者的孩子并在这些控件上设置任何属性。

从这里开始,您可以在运行时查看 TScreen 类,该类包含名为 CustomForms 和 Forms 的属性,它们允许您分别访问 TCustomForm 和 TForm 的所有当前活动的后代。由于您可以访问它,因此您可以在运行时更改所有字体的字体。因此,如果您允许用户选择字体,则使用 Screen 对象可以更改所有表单上的字体。

两者的结合可以让您轻松控制显示属性。

请注意,更改字体可能会更改所呈现文本的大小。 (当然会改变字体大小和样式)。这会影响控件的外观和它们的对齐方式。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多