Впервые у меня возникли проблемы с созданием «сложного» интерфейса с Delphi. Я использую монитор 4K для разработки и тестирования, и у меня есть некоторые проблемы с масштабированием.
Мое приложение использует дизайн с двумя колонками, представьте себе представление diff под управлением источника, где у вас есть левая панель и правая панель, котораяЗеркально отразите сами компоненты, но содержание (текст) этих компонентов различается.
Чтобы дать вам представление, я делаю это в форме изменения размера:
edtFixExifLeftFile.Width := Floor((pnlFixExifTop.ClientWidth - (bbpFixExifBrowseLeft.Width * 2 + 42)) / 2);
bbpFixExifBrowseLeft.Left := edtFixExifLeftFile.Left + edtFixExifLeftFile.Width + 5;
edtFixExifRightFile.Left := bbpFixExifBrowseLeft.Left + bbpFixExifBrowseLeft.Width + 16;
edtFixExifRightFile.Width := edtFixExifLeftFile.Width;
bbpFixExifBrowseRight.Left := edtFixExifRightFile.Left + edtFixExifRightFile.Width + 5;
Таким образом, оба столбца занимают 50% пространстваЭто идеальный пиксель при использовании в среде HD (1080p), но в среде 4K масштабирование (мой TForm.Scaled = True
) полностью «съедает» одно из полей (я использую поля в 8 пикселей, а масштабирование занимает примерно на 9 пикселей больше, чем ожидалось). В 4K это выглядит неправильно (правильный TEdit немного переполняет TForm).
Как я могу создать идеальный по пикселям интерфейс в HD и 4K средах? Как правильно кодировать изменение размера моего компонента?
Я использую последнюю версию Delphi (10.3) и не использую причудливые компоненты (только "стандартный" VCL).