0

我有一个尺寸为 (600 * 400) 的德尔福形式,即宽度 = 600 和高度 = 400。我在其上保留了 3 个尺寸相同的面板,尺寸 (150 * 300) 彼此等距。

现在,我需要在调整表单大小(手动或通过最大化按钮变小或变大)时,面板应随表单调整大小。

我为此使用了 anchors 属性。但它没有按预期工作。面板彼此重叠。我很困惑将哪个锚属性设置为 true 或将哪个锚属性设置为 false 来完成此功能。请帮我解决这个问题。

4

2 回答 2

2

我倾向于以另一种方式(无论是对还是错)攻击这种方式,您可以使用“对齐”属性将面板“对齐”到表单的一侧或另一侧。然后,我经常选择一个与“客户端”对齐的主面板,以在调整大小时占据大部分可用空间(因此,一个面板与左侧对齐,另一个与顶部对齐,第三个与客户端对齐。您可以在面板中拥有面板,并且使用拆分器组件允许用户根据需要调整大小。这可能不是你想要的结果,但肯定会避免重叠问题,这只是我猜想的地方。

但是,也许您希望事物可以缩放,因此每个面板都保持相同的纵横比?鉴于您标记了 XE2,如果这是 FireMonkey 表单,那么我认为缩放表单将是一种选择(请参见此处:http ://edn.embarcadero.com/article/42560 )

于 2012-11-28T06:56:52.480 回答
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;
于 2012-11-28T06:58:42.663 回答