Перейти к содержанию
Fire Monkey от А до Я
  • 0

задать шрифт (default)


des80

Вопрос

Есть ли возможность указать какой шрифт должен использоваться по дефолту в моем приложении на всех формах и на всех контролах? У них сейчас стоит у всех (default), я хочу в одном месте всем задать, чтобы вместо (default) подставлялся Arial например

Изменено пользователем des80
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
17 минут назад, Равиль Зарипов (ZuBy) сказал:

ну например вот так

ChangeFont.zip

Этот код просто заменяет у всех компонентов данной формы шрифты. Если у меня 30 форм то мне придется на каждой форме прописывать этот код. И этот код не поменяет шрифт у динамически создаваемых компонентов. Другого нет способа?

Ссылка на комментарий
  • 0
  • Модераторы
Только что, des80 сказал:

Этот код просто заменяет у всех компонентов данной формы шрифты. Если у меня 30 форм то мне придется на каждой форме прописывать этот код. И этот код не поменяет шрифт у динамически создаваемых компонентов. Другого нет способа?

эмм..

  1. а где должен шрифт меняться??
  2. что вам мешает у динамически создаваемых компонентов прописать нужный шрифт?
  3. да хоть 100 форм, в чем проблема?
Ссылка на комментарий
  • 0
Только что, Равиль Зарипов (ZuBy) сказал:

эмм..

  1. а где должен шрифт меняться??
  2. что вам мешает у динамически создаваемых компонентов прописать нужный шрифт?
  3. да хоть 100 форм, в чем проблема?

1.я хочу в одном месте централизованно написать код, чтобы (default) во всех формах, на всех компонентах, включая те, которые создаются после выполнения этого кода воспринимался как какой то определенный шрифт. То есть задать какой то шрифт дефолтным.

2.ничего не мешает, просто нужно в 100500 мест залезть в коде и прописать FontFamily:='Arial';

3.проблема в том, что мне придется на каждой форме это вызывать, мне придется это 100 раз копипастить. Чтобы этого не делать я и задал этот вопрос возможно ли задать какой то шрифт дефолтным в принципе

Ссылка на комментарий
  • 0

Delphi умеет наследование форм.

Делаете основную форму с общим поведением для всех форм и все формы проекта наследуете от этой формы.

 

Ссылка на комментарий
  • 0
2 минуты назад, Дмитрий Ш. сказал:

Delphi умеет наследование форм.

Делаете основную форму с общим поведением для всех форм и все формы проекта наследуете от этой формы.

 

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

Изменено пользователем des80
Ссылка на комментарий
  • 1
  • Модераторы

"я не хочу думать! я хочу кнопку, нажимаешь и все работает"

как я вижу эту реализацию:

делается отдельный модуль, в который перемещается код

procedure ChangeFont(const aControl: TControl; const aFontName: string);
const
  StyledSett = [TStyledSetting.Size, TStyledSetting.Style, TStyledSetting.FontColor];
var
  aTextSettings: ITextSettings;
  I: Integer;
begin
  if aControl is TListView then
  begin
    (aControl as TListView).ItemAppearanceObjects.ItemObjects.Text.Font.Family := aFontName;
    (aControl as TListView).ItemAppearanceObjects.ItemObjects.Detail.Font.Family := aFontName;
  end
  else
  begin
    if Supports(aControl, ITextSettings, aTextSettings) then
    begin
      aTextSettings.StyledSettings := StyledSett;
      aTextSettings.TextSettings.Font.Family := aFontName;
    end;
    for I := 0 to aControl.ControlsCount - 1 do
      ChangeFont(aControl.Controls[I], aFontName);
  end;
end;

..................................................
procedure ApplyFontToForm(const aForm: TForm; const aFontName: string;);
var
  I: Integer;
begin
  for I := 0 to aForm.ComponentCount - 1 do
  begin
    if aForm.Components[I] is TControl then
      ChangeFont(aForm.Components[I] as TControl, aFontName);
  end;
end;

прописываем ChangeFont и ApplyFontToForm до implementation

и в форме после создания дин. компонентов и/или в OnShow пишем ApplyFontToForm(Form30, 'Roboto');

даже незнаю как можно сделать проще

Ссылка на комментарий
  • -4
11 минут назад, Равиль Зарипов (ZuBy) сказал:

"я не хочу думать! я хочу кнопку, нажимаешь и все работает"

как я вижу эту реализацию:

делается отдельный модуль, в который перемещается код


procedure ChangeFont(const aControl: TControl; const aFontName: string);
const
  StyledSett = [TStyledSetting.Size, TStyledSetting.Style, TStyledSetting.FontColor];
var
  aTextSettings: ITextSettings;
  I: Integer;
begin
  if aControl is TListView then
  begin
    (aControl as TListView).ItemAppearanceObjects.ItemObjects.Text.Font.Family := aFontName;
    (aControl as TListView).ItemAppearanceObjects.ItemObjects.Detail.Font.Family := aFontName;
  end
  else
  begin
    if Supports(aControl, ITextSettings, aTextSettings) then
    begin
      aTextSettings.StyledSettings := StyledSett;
      aTextSettings.TextSettings.Font.Family := aFontName;
    end;
    for I := 0 to aControl.ControlsCount - 1 do
      ChangeFont(aControl.Controls[I], aFontName);
  end;
end;

..................................................
procedure ApplyFontToForm(const aForm: TForm; const aFontName: string;);
var
  I: Integer;
begin
  for I := 0 to aForm.ComponentCount - 1 do
  begin
    if aForm.Components[I] is TControl then
      ChangeFont(aForm.Components[I] as TControl, aFontName);
  end;
end;

прописываем ChangeFont и ApplyFontToForm до implementation

и в форме после создания и/или в OnShow пишем ApplyFontToForm(Form30, 'Roboto');

даже незнаю как можно сделать проще

ты дурак или нет?

 

1.У меня уже есть проект, в котором 100 форм, я прекрасно знаю как это сделать, я прекрасно знаю что мне нужно прописать ApplyFontToForm в OnShow каждой формы, но мне придется делать это 100 раз, а я задал здесь этот вопрос, чтобы узнать можно ли ОДИН раз задать что Arial это дефолтный шрифт, шрифт по умолчанию. Во всех 100 формах у меня везде шрифт прописан (default). А что это за шрифт default? какой шрифт по факту туда подставляется? и можно ли ЗАМЕНИТЬ этот шрифт по умолчанию. Этот шрифт задается в настройках винды? или его можно задать отдельно в моей программе?

2.Ок, я написал 100 раз на 100 формах ApplyFontToForm в OnShow. А потом у меня создаются кнопки и лабелы после выполнения этого кода и на ней будет стандартный шрифт, а не тот который я задал в ApplyFontToForm. Да я могу без проблем задать шрифт при создании компонента, но КОД УЖЕ НАПИСАН И ЕГО МНОГО и мне опять таки мне придется это делать много много раз, во многих местах прописывать Familyfont='Arial'. Понимаешь, нет?

Изменено пользователем des80
Ссылка на комментарий
  • 0
  • Модераторы

не хорошо так выражаться, можно и бан получить

  1. то что у тебя 100 форм это твоя проблема
  2. то что тебе лень прописать одну строчку в создании одного типа компонентов, то думаю что там говно-код
  3. и если бы ты понял, что я предлагаю, ты бы уже давно реализовал, а не писал на форуме "остроумный" пост, в коде добавляется только одна строчка и это не ApplyFontToForm (если там не говно-код)

я бы предложил еще один кардинальный вариант, но не буду

Ссылка на комментарий
  • -6
12 минут назад, Равиль Зарипов (ZuBy) сказал:

не хорошо так выражаться, можно и бан получить

  1. то что у тебя 100 форм это твоя проблема
  2. то что тебе лень прописать одну строчку в создании одного типа компонентов, то думаю что там говно-код
  3. и если бы ты понял, что я предлагаю, ты бы уже давно реализовал, а не писал на форуме "остроумный" пост, в коде добавляется только одна строчка и это не ApplyFontToForm (если там не говно-код)

я бы предложил еще один кардинальный вариант, но не буду

ну тут 2 варианта :

либо ты слабоумный, раз не понял что я имел ввиду после такого разжевывания

либо я непонятно объясняю суть проблемы

Изменено пользователем des80
Ссылка на комментарий
  • 0

2017-01-13_003234.png

6 часов назад, des80 сказал:

ты дурак или нет?

 

1.У меня уже есть проект, в котором 100 форм, я прекрасно знаю как это сделать, я прекрасно знаю что мне нужно прописать ApplyFontToForm в OnShow каждой формы, но мне придется делать это 100 раз, а я задал здесь этот вопрос, чтобы узнать можно ли ОДИН раз задать что Arial это дефолтный шрифт, шрифт по умолчанию. Во всех 100 формах у меня везде шрифт прописан (default). А что это за шрифт default? какой шрифт по факту туда подставляется? и можно ли ЗАМЕНИТЬ этот шрифт по умолчанию. Этот шрифт задается в настройках винды? или его можно задать отдельно в моей программе?

2.Ок, я написал 100 раз на 100 формах ApplyFontToForm в OnShow. А потом у меня создаются кнопки и лабелы после выполнения этого кода и на ней будет стандартный шрифт, а не тот который я задал в ApplyFontToForm. Да я могу без проблем задать шрифт при создании компонента, но КОД УЖЕ НАПИСАН И ЕГО МНОГО и мне опять таки мне придется это делать много много раз, во многих местах прописывать Familyfont='Arial'. Понимаешь, нет?

Ну если все дураки, что сам не додумался?

6 часов назад, des80 сказал:

.ничего не мешает, просто нужно в 100500 мест залезть в коде и прописать FontFamily:='Arial';

 

Возьми dfm файлы и регулярками пройдись по свойствам.

6 часов назад, des80 сказал:

проблема в том, что мне придется на каждой форме это вызывать, мне придется это 100 раз копипастить.

 

прицепи 1 обработчик на 100 форм. Какой - это уже сказали выше. Сам обработчик - в отдельный юнит. Ну далее, думаю, понятно.

 

P.S.

6 часов назад, des80 сказал:

Этот шрифт задается в настройках винды?


По секрету скажу: в BIOS'е.

 

Изменено пользователем egorea1999
Ссылка на комментарий
  • 1
  • Модераторы

Уважаемые участники, в частности @des80!

Призываю вас к соблюдению общепринятых норм общения.

Вынесено 1 предупреждение. За дальнейшим нарушением незамедлительно последует наказание на усмотрение Администратора/Модератора.

Ссылка на комментарий
  • -4
15 часов назад, Дмитрий Ш. сказал:

des80, с такой позицией помощи можно не ждать.

хамству тут не место

какой еще позицией? Я всего то задал вопрос, а зарипов его неправильно понял и киданул мне решение, которое я слил, это задело его опухшее чсв и он стал бросаться фразочками типо "говнокод" или "я не хочу думать! я хочу кнопку, нажимаешь и все работает" , на такой бред я не мог не ответить.

Ссылка на комментарий
  • 0

Здесь про стили кто-нибудь говорил? Так вот в стиле как раз и указывается какой шрифт используется по умолчанию. Про стили тут вроде отдельная тема есть.

Ссылка на комментарий
  • 0

Не могу понять, почему шрифты которые дополнительно установлены в системе не отображаются при переносе приложения в другой комп. Т.е. установил шрифты, указал их в стиле или просто в настройках кнопки и т.д. Все ОК. Переношу приложение на другой комп, так же устанавливаю шрифты, запускаю приложение. Шрифт или не отображается вообще или загружается по дефолту. При то что, в этом же приложении запихиваю все шрифты в системе в combobox и так эти шрифты есть. Но они как бы не работают.

В VCL это работает без проблем.

2017-06-10_14-37-45.png

2017-06-10_14-36-06.png

Изменено пользователем irico
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...