Почему элементы управления не в том месте, если они расположены во время прокрутки формы?
Рассмотрите эту форму с надписью "Наблюдатель здесь" и кнопкой "Нажмите":
По нажатию кнопки я устанавливаю ярлык Left
до 10 (Label1.Left :=10;
)
Я получаю правильно, как на втором изображении:
Затем я прокручиваю форму вправо:
Теперь, после нажатия кнопки, я получаю проблему, которая показана на 4-м изображении:
Лейбл Left
больше не 10 Это больше 10, но мне нужно, чтобы оно было 10. Как я могу это сделать?
1 ответ
Label1.Left:= 10; Значит 10 слева от текущей границы (form1.left).
поэтому Label1.Left:= 10; не будет давать тот же результат всегда, это зависит от Form1.HorzScrollBar.Position ;
Вы должны кодировать как
Label1.Left := 10 - Form1.HorzScrollBar.Position ;
Вы можете увидеть этот шаблон во время разработки, выбрав компонент в вашей форме1 и отрегулировав полосу прокрутки, вы можете заметить, что в объекте инспектора левое значение выбранного компонента также изменится при перемещении полосы прокрутки
Вы можете понять это так
Если у вас есть HorzScrollBar, то, если вы добавите компоненты и установите их левое значение очень высоким, форма1 не будет увеличивать свою ширину, но ее виртуальная ширина, обрабатываемая полосой прокрутки, будет увеличена, все значения координации будут давать значение относительно формы1, не связанное с виртуальное пространство