Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

Самопроизвольное изменение размеров шрифта у компонентов формы   Найти похожие ветки 

 
SMT   (2004-08-31 19:56) [0]

Уважаемые мастера,

Почему при переносе моей программы с одного компьютера на другой меняются размеры шрифта у разных компонентов, помещенных на форму?

С уважением, Игорь Степанов


 
pasha_golub ©   (2004-08-31 20:10) [1]

1. Потому что на разных машинах разные настройки видео, то есть на одной 800х600, а на другой 1024х728
2. Потому что на другой машине нету какого-то шрифта

еще есть возможности, но, думаю, стоит проверить хотя бы эти


 
GuAV ©   (2004-08-31 20:58) [2]

3. desk.cpl->Настройка->Дополнительно->Общие->Размер шрифта


 
Mim1 ©   (2004-08-31 21:08) [3]

TForm.Scaled


 
SMT   (2004-09-01 20:15) [4]

Уважаемые мастера,

Спасибо за советы. Я поэкспериментировал и установил, что главное - это размер шрифта, установленный через Настройка - Экран - Настройка - Дополнительно - размер шрифта. Этот параметр влияет на все шрифты как в самой Delphi, так и в моей программе. При этом, установка свойства Form.Scaled=True и далее желаемый  размер в свойстве Form.PixelsPerInch ничего не дает.
Как это предотвратить и  обеспечить доминирование указанных свойств формы над системным размером шрифта?
Заранее благодарю. Игорь Степанов


 
Kurtevich ©   (2004-09-01 20:48) [5]

наверно размер шрифта надо соотносить с PixelsPerInch. то есть Font.Size := _size/Font.PixelsPerInch или умножить, может еще на 100 где-то, ну вобщем типа того... :)


 
Mim1 ©   (2004-09-02 01:08) [6]


> При этом, установка свойства Form.Scaled=True и далее желаемый
>  размер в свойстве Form.PixelsPerInch ничего не дает.

может Form.Scaled=False
:)


 
SMT   (2004-09-02 19:27) [7]

Уважаемые мастера,

Большое спасибо за ценные советы. На их основе мне удалось найти способ делать размер шрифтов на элементах формы неизменным независимо от системной установки "Размер шрифта".
Он довольно прямолинейный, хотя работает. Может быть есть лучше.

В Object Inspector надо установить для всех компонентов на форме свойство ParentFont=True.
Далее надо добавить в uses модуль Registry;
В форме объявить переменные

var
 CurReg:TRegistry;
 logpixels_cm:byte;

Затем в методе TForm1.FormCreate прочитать значение параметра из Реестра
CurReg:=TRegistry.Create;
CurReg.RootKey:=HKEY_CURRENT_CONFIG;
CurReg.OpenKeyReadOnly("\Software\Fonts");
logpixels_cm:=CurReg.ReadInteger("LogPixels");

Далее в этом же методе форма шкалируется, так как она автоматически увеличивается в зависимости от величины LogPixels.
  ScaleBy(trunc(96*100/logpixels_cm),100);
Наконец, поскольку метод ScaleBy может неудачно изменить размер шрифтов, их надо выставить принудительно, например:
 
If logpixels_cm<=96 then Form1.Font.Size:=10;
If  (logpixels_cm>96) and (logpixels_cm<=120) then Form1.Font.Size:=9;
If  (logpixels_cm>120) then Form1.Font.Size:=8;
 
Это все работает в диапазоне от "Обычный размер" (96 пикселей/дюйм) до "крупный размер" (120 пикселей/дюйм).

Еще раз большое спасибо за ценные советы.
С уважением, Игорь Степанов


 
Mim1 ©   (2004-09-03 05:29) [8]

Скажите а scaled := false; не помогло? Меня это свойство всегда выручало.


 
DimKa ©   (2004-09-03 09:48) [9]


> Mim1 ©   (03.09.04 05:29) [8]
> Скажите а scaled := false; не помогло? Меня это свойство
> всегда выручало.

Должно помогать, согласен



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
14-1093935407
Nikolay M.
2004-08-31 10:56
2004.09.19
Гостиницы в Питере - 2


1-1094220858
Павел
2004-09-03 18:14
2004.09.19
Общие вопросы


4-1091435368
Antonmm
2004-08-02 12:29
2004.09.19
Связь с другими программами


14-1093878077
Piter
2004-08-30 19:01
2004.09.19
Контрол для редактирования текста


4-1091435646
Unknown Mystic
2004-08-02 12:34
2004.09.19
MsgWaitForMultipleObjects





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский