Масштабирование интерфейса

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Масштабирование интерфейса

Сообщение Sharfik »

Не знаю какой раздел выбрать, пусть общий будет.

Вопрос два:
1. Как подружить программу и масштабирование интерфейса со стороны ОС? Есть Панель, на ней группы в которые Edit, checkbo. Кто то привязан справа и слева, кто то справа. В общем, просто штатными средствами по ширине растягивающееся содержимое группы. Как только у ОС включается масштабирование 125%(ноутбук), то вся красота превращается в свалку. Отступы становятся огромными, а то что было привязано справа и слева, в равных условиях от границы Группы оказывается посередине Группы. Не знаю есть ли что то подобное под Nix, но в Win с версии 7 это есть.
2. Как считать из системы что масштабирование активно?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Ищите что-нибудь типа GetDpiForMonitor и GetDpiForWindow в MSDN
Аватара пользователя
Sharfik
энтузиаст
Сообщения: 836
Зарегистрирован: 20.07.2013 01:04:30

Сообщение Sharfik »

Спасибо.
Интересно, можно ли отключить реакцию на масштабирование для всей программы.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

А вы встроенный в лазарь Anchor Editor используете? Вот тут дают советы:
https://forum.lazarus.freepascal.org/in ... ic=52060.0

ну и еще вариант - динамически создавать формы в рантайме и подстраивать под разрешение, но по мне это муторно очень...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

1. В параметрах проекта нужно включить масштабирование
2. Не использовать абсолютное позиционирование - только через привязки
3. По возможности у всех компонент выставлять AutoSize=true (там где оно есть)
4. Для пиктограм использовать ImageList-ы в которых созданы наборы для нужных масштабов - например 16*16 24*24 32*32
Ответить