Форум: "Основная";
Текущий архив: 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