我有一个delphi形式的尺寸说(600 * 400),即宽度= 600,高度= 400.我在它上面保留了3个相同尺寸的面板,尺寸(150 * 300)彼此等距。
现在,我需要在调整表单大小(手动缩小或大小或通过最大化按钮)时,面板应该使用表单调整大小。
我正在使用anchors属性。但它不能按预期工作。面板彼此重叠。我很困惑哪个anchor属性设置为true或哪个为false以完成此功能。请帮帮我。
答案 0 :(得分:2)
我倾向于以另一种方式攻击(对或错),在这里你使用“对齐”属性将一个面板“对齐”到一个或另一个表单的一侧。然后,我经常选择与“客户端”对齐的主面板,以便在调整大小时占用大部分可用空间(因此,一个面板对齐左侧,另一个面板对齐顶部,第三个面板对齐客户端。您可以在面板内安装面板,以及使用拆分程序组件允许用户根据需要调整大小。这可能不是你所追求的结果,但肯定避免了重叠问题,只是需要我猜的地方。
也许你想要扩展比例,所以每个面板保持相同的宽高比?鉴于你标记了XE2,如果这是一个FireMonkey表单,那么我认为缩放表单是一个选项(见这里:http://edn.embarcadero.com/article/42560)
答案 1 :(得分:2)
您必须手动定位和调整大小。您可以使用面板所有者的OnReSize-Method。
procedure TOwnerForm.OnResize(Sender : TObject);
begin
panel1.width := Self.Width div 3;
panel2.width := Self.width - 2*panel1.Width;
panel3.width := Self.Width - panel1.Width - panel2.Width;
panel1.Left := 0;
panel2.Left := panel1.left + panel1.width;
panel3.left := panel2.left + panel2.width;
panel1.top := 0;
panel2.top := panel1.top;
panel3.top := panel1.top;
end;