Неправильные элементы управления автомасштабированием с привязками к PageControl в форме VCL

У меня проблемы с автоматическим масштабированием элементов управления в моей форме для разных настроек DPI монитора. Rad Studio 10.2 Токио. «Включить высокое разрешение» включено. Я установил PixelsPerInch формы на 96 во время разработки. Я помещаю TPageControl на форму, создаю в ней страницу TTabSheet, помещаю некоторые элементы управления на страницу и устанавливаю для их свойства Anchor значение akRight (в дополнение к akLeft и akTop). При запуске программы на мониторе с разрешением 120 DPI правый край этих элементов управления выглядит вытянутым за правую границу PageControl, так что правые части элементов управления не видны. Если я отключу akRight, то элементы управления масштабируются правильно. Но мне нужно, чтобы эти якоря правильно изменяли размер формы во время выполнения. Как решить проблему?

PS Ошибка исправлена ​​в Rad Studio 10.3


person Vladimir    schedule 21.01.2018    source источник


Ответы (2)


C++ Builder Help для TFont говорит:

Свойство PixelsPerInch влияет только на шрифты принтера и не должно изменяться.

Чтобы изменить размер шрифта, используйте свойства Size или Height.

person Baxter    schedule 23.01.2018

Я столкнулся с той же проблемой с приложением, владеющим множеством TPageControl с TEdit, TMemo и другими смещенными элементами управления в режиме с высоким разрешением.

Моим первым подходом к решению этой проблемы была попытка передать TForm процедуре с именем FixFormScaling(), в которой я намеревался исправить все ошибки масштабирования. Но я сильно потерпел неудачу из-за множества различных выравниваний содержащихся элементов управления, с которыми я не мог разумно справиться за одну короткую процедуру.

Похоже, работает второй подход: на каждом TTabSheet я размещаю TPanel со следующими свойствами:

Align=alClient
BevelOuter=bvNone
Name=pnlDpiHelper<NameOfTabsheet>
ShowCaption=False

Я перемещаю все остальные элементы управления (TEdit, TMemo и т. д.) на эту TPanel. В результате в режиме с высоким разрешением все теперь масштабируется правильно!

person Anse    schedule 01.11.2018