【发布时间】:2021-01-03 07:43:29
【问题描述】:
我正在使用 Delphi XE3。
我在我的表单中添加了两个TEdit 控件,如下所示:
两者都将Anchors 设置为[akLeft, akTop, akRight],这样当我调整表单大小时,编辑也会放大它们的大小。
但是,如果我在代码中更改Edit2的位置,如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Left := Edit1.Left - 10;
end;
然后点击Button1后会看到这个:
但我希望看到的是:
由于Edit2 的右边框被锚定到表单的右边框。为什么它没有按预期工作?
更新
在我的理解中,anchor 是指控件边框和表单边框之间的距离是固定的,听起来像是一个锚点。所以右锚意味着edit2的右边框和form的右边框之间的距离是固定的。并且在修改edit2的左边框时,它的宽度也会自动改变,再次保持固定距离。
更新2
我重新阅读了帮助文档,因为它解释了如下锚点:
“使用 Anchors 确保控件保持其相对于其父级边缘的当前位置,即使父级已调整大小。”
这和我理解的一样。
但是,它强调“仅在调整父级大小时才强制执行锚点。”。这条线似乎回答了我的问题,因为当我更改 Edit2.left 时,表单并没有改变。所以此时锚点不起作用。
【问题讨论】:
-
您已在“Update2”中回答了您的问题。您提到的两个句子都表明它必然会调整父级的大小。第一句不是“和你理解的一样”,也不是你写问题的时候理解的。