Главная страница
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.051 c
14-1093346330
0d08h
2004-08-24 15:18
2004.09.19
Java Socket


3-1092802109
Марат
2004-08-18 08:08
2004.09.19
Ошибка в DBGrid


1-1094281938
Андрей.Н
2004-09-04 11:12
2004.09.19
Ошибка при загрузке файлов проекта D6.


1-1094532016
Andrey V.
2004-09-07 08:40
2004.09.19
Можно ли в ToolBar ...


4-1091777370
Арт
2004-08-06 11:29
2004.09.19
как нажать кнопку "Далее"