Form.Left смещен на 7 пикселей по сравнению с координатами экрана

У меня были большие проблемы с выравниванием того места, где должно появляться всплывающее меню, когда я очень расстроился из-за того, что не смог закрепить несколько пикселей смещения.

Итак, я сделал простую программу, которая показывала мне только текущую позицию курсора и позицию окна формы, и я обнаружил, что по какой-то причине координата Form.Left смещена на 7? Когда я перемещаю окно в самый верхний левый угол, координаты показывают -7,0, а когда я перемещаю окно на 0,0, окно смещается на несколько пикселей вправо. Смотрите скриншоты.

Кто-нибудь может мне это объяснить? Почему это происходит, и есть ли способ это исправить? Кроме того, почему это не влияет на вертикальное положение?

введите здесь описание изображения

введите здесь описание изображения


person Neamow    schedule 06.04.2020    source источник
comment
Где заканчивается форма, когда вы вызываете Left := 0; Top := 0;?   -  person Sertac Akyuz    schedule 06.04.2020
comment
Первый скриншот. Слева от места на несколько пикселей.   -  person Neamow    schedule 06.04.2020
comment
После того, как вы установите код на 0,0, проверьте положение с помощью стороннего приложения, например WinSpy++. Если окно выключено, вероятно, у вас проблема с виртуализацией DPI.   -  person Sertac Akyuz    schedule 06.04.2020
comment
Ответ на аналогичный вопрос проливает свет на причины и возможные обходные пути. Найдите другие примеры с window position Windows 10   -  person Tom Brunberg    schedule 06.04.2020
comment
Ах, это похоже на ту же самую проблему. Я пытался найти его, но я думаю, что использовал неправильные ключевые слова. Спасибо!   -  person Neamow    schedule 07.04.2020