Rak*_*tti 5 delphi scrollbar form-design
考虑这个表单,标签为"Observer here"和一个"Click"按钮:

点击按钮我将标签设置Left为10(Label1.Left :=10;)
我正如第二张图片中那样正确:

然后,我将表单滚动到右边:
现在,点击按钮后我遇到了问题,如第4张图所示:

标签Left不再是10.它超过10,但我需要它10.我怎么能这样做?
Label1.Left:= 10; 意味着10从当前边界(form1.left)离开.
所以Label1.Left:= 10; 总是不会产生相同的结果,这取决于Form1.HorzScrollBar.Position ;
你必须像代码一样
Label1.Left := 10 - Form1.HorzScrollBar.Position ;
Run Code Online (Sandbox Code Playgroud)
您可以通过选择form1中的组件并调整滚动条来看到设计时的这种模式,您可以注意到在对象Inspector中,当移动滚动条时,所选组件的左侧值也会发生变化
你可以这样理解它
如果你有HorzScrollBar然后如果添加组件并将其左值设置得非常高,则form1将不会增加其宽度,但由滚动条处理的虚拟宽度将增加,所有协调值将给出相对于form1的值与虚拟空间