Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
6-1089931752
Yegorchic
2004-07-16 02:49
2004.09.19
Проверка существования файла на сайте


14-1093472027
Гарри Поттер
2004-08-26 02:13
2004.09.19
Outpost vs DMClient


1-1094392347
ZLG
2004-09-05 17:52
2004.09.19
Как сохранить состояние CheckBox, radiobutton, edit


1-1094212491
UserUserov
2004-09-03 15:54
2004.09.19
Остановка выхода


4-1091346018
Protoss
2004-08-01 11:40
2004.09.19
А правда реально разбудить компьютер из режима слип программно?