View previous topic :: View next topic |
Author |
Message |
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Mon Jul 10, 2006 09:59 Post subject: Внутренний шрифт в плагинах/утилитах... |
|
|
Узнал вот о проблемах отображения шрифтов у забугорных пользователей:
http://www.ghisler.ch/board/viewtopic.php?t=4858
Общий смысл я уловил, но всё равно хотелось бы попросить владеющих английским лучше меня перевести содержимое указанной темы, поскольку это актуально для тех, кто пишет плагины/утилиты с мультиязычным интерфейсом и заботится о соих пользователях :) |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Jul 10, 2006 10:08 Post subject: |
|
|
Если вкратце: многие используют конкретный фиксированный шрифт в своих диалогах, типа MS Sans Serif. Это плохо тем, что в нём нет многих полезных символов, что мешает локализовывать программу. Предлагается использовать Arial Latin или Tahoma Latin, 8, normal, а ещё лучше - дать пользователю возможность самому выбирать шрифт.
Где-то ещё Clo писал о шрифте MS Shell Dlg, который хорош тем, что сам по себе является "виртуальным", ненастоящим шрифтом, а настраивается через глобальные системные настройки; в результате у пользователя все программы выглядят одинаково (если они, конечно, используют этот шрифт). _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Jul 10, 2006 10:44 Post subject: |
|
|
Там он рассуждает, что можно использовать всякие спец-символы внутри текстовых LNG-файлов (например, писать "кривой" апостроф явно вместо задания его через десятичный код; не указывать бэк-слеш перед внутренними кавычками). _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Jul 10, 2006 15:15 Post subject: |
|
|
Не совсем понял вопрос. К какой части интерфейса относится фраза "как же организовать выбор шрифта"? К собственно диалогу выбора? К кнопочкам для вызова этого диалога? К отображаемому рядом с кнопочкой примеру текста в выбранном шрифта?..
Если первое, то есть стандартная WinAPI-функция ChooseFont для вызова этого самого диалога, а в зависимости от среды программирования есть и разнообразные обёртки для этой функции. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Mon Jul 10, 2006 16:00 Post subject: |
|
|
Я имел в виду совсем другое. Как разом для всех компонентов формы поменять этот самый шрифт. Но уже справился. Code: | fdFont->Font=fmMain->Font;
if(fdFont->Execute())
{
fmMain->Font=fdFont->Font;
fmMain->Repaint();
}
| Но небольшая проблема всё равно осталась. Панели, ГроупБоксы, СкроллБары, может ещё что-то не перерисовываются. Что делать? |
|
Back to top |
|
|
Maximus
Joined: 07 Apr 2005 Posts: 927 Location: Украина, Кировоградская обл., г. Знаменка
|
(Separately) Posted: Thu Jul 13, 2006 10:54 Post subject: |
|
|
Решил проблему так: Code: | fdFont->Font=fmMain->Font;
if(fdFont->Execute())
{
fmMain->Font=fdFont->Font;
for(int i=0;i<fmMain->ComponentCount;i++)
{
TControl *Component=(TControl *)fmMain->Components[i];
if(Component->HasParent() && !Component->ClassNameIs("TMenuItem"))
Component->Repaint();
}
} | Подразумевается, что у всех компонентов ParentFont==true.
fdFont - это FontDialog; fmMain - это форма.
Возможно кроме TMenuItem в условии придется добавить еще какие-то классы, если они используются и при вызове для них Repaint() вываливается ошибка. |
|
Back to top |
|
|
|