Страница 1 из 1

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

СообщениеДобавлено: 22.05.2021 09:22:16
Sharfik
Не знаю какой раздел выбрать, пусть общий будет.

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

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

СообщениеДобавлено: 22.05.2021 10:28:05
Снег Север
Ищите что-нибудь типа GetDpiForMonitor и GetDpiForWindow в MSDN

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

СообщениеДобавлено: 23.05.2021 02:09:55
Sharfik
Спасибо.
Интересно, можно ли отключить реакцию на масштабирование для всей программы.

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

СообщениеДобавлено: 23.05.2021 10:50:52
Снег Север
А вы встроенный в лазарь Anchor Editor используете? Вот тут дают советы:
https://forum.lazarus.freepascal.org/in ... ic=52060.0

ну и еще вариант - динамически создавать формы в рантайме и подстраивать под разрешение, но по мне это муторно очень...

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

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