Согласованность шрифтов по всему проекту?

Is there a quick and effective way of applying a global Font to be used in a project?

Под этим я подразумеваю, что я хотел бы установить конкретное имя шрифта, которое будут использовать все элементы управления в моем проекте, такие какTButton, TEdit, TLabel и т.п.

Как правило, установка шрифта для формы, а не конкретного элемента управления, изменит все элементы управления в этой форме на указанный шрифт.

Однако есть небольшая проблема: если вы вручную изменили шрифт для определенного элемента управления, то установка шрифта с помощью формы больше не будет обновлять те элементы управления, которые ранее были изменены вручную.

Idea 1

Я думал об использовании цикла For и итерации по каждому компоненту в моих формах и настройке шрифта таким образом, например:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  with TForm(Self) do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if Components[i] is TButton then
      begin
        TButton(Components[i]).Font.Name  := 'MS Sans Serif';
        TButton(Components[i]).Font.Size  := 8;
        TButton(Components[i]).Font.Style := [fsBold];
      end;

      if Components[i] is TLabel then
      begin
        TLabel(Components[i]).Font.Name  := 'MS Sans Serif';
        TLabel(Components[i]).Font.Size  := 8;
        TLabel(Components[i]).Font.Style := [fsBold];
      end;
    end;
  end;
end;

Но делать это кажется очень грязным, это также будет значительный объем кода для простой задачи.

Idea 2

Я знаю, что я мог вручную изменять шрифты во время разработки по одному для каждого элемента управления, но из-за нескольких форм, проходивших через это, могло потребоваться время, и даже тогда я мог пропустить элемент управления.

Idea 3

Как и в случае с Идеей 2, другим способом может быть просмотр формы в виде текста (DFM) и поиск и замена шрифта таким образом.

По сути, я стремлюсь к согласованности в своем приложении, и мне хотелось бы использовать один шрифт повсюду.

Я что-то упускаю здесь совершенно очевидно, что я пытаюсь сделать излишним для такой задачи?

Ответы на вопрос(3)

Ваш ответ на вопрос