当用户调整表单大小时,如何在运行时调整组件大小?

时间:2015-06-28 08:08:07

标签: delphi delphi-7

我正在使用delphi开发一个新的应用程序。我有一个名为MainForm的表单。 MainForm有3个面板:Panel1,Panel2和Panel 3.面板按照从表格顶部到表格底部的顺序插入。 Panel1 Align属性设置为alTop,Panel3 Align属性设置为alBottom。 Panel 2 align属性设置为alClient。我在Panel2上有一个DBGrid。

问题是当用户在运行时调整表单大小时,DBGrid大小不受影响。当我更改面板2和面板3的顺序时,DBGrid的大小会随着用户更改表单大小而更改。

我想知道是否可以将面板2放在窗体的中间,并且还可以在用户更改窗体大小时更改DBGrid?

1 个答案:

答案 0 :(得分:7)

在Delphi 7中为我工作正常。你没有这么说,但我认为你将DBGrid.Align属性设置为alClient,不是吗?
或者设置DBGrid.Align属性,您可以将DBGrid.Anchors设置为[akLeft,akTop,akRight,akBottom](这四个都是true)。

关于两个DBGrids的评论后编辑

如果您希望两个DBGrids都使用表单调整大小,那么我建议您跳过Panel3,将两个DBGrids放在Panel2(未对齐)上,并将以下OnResize事件添加到表单中:< / p>

procedure TForm1.FormResize(Sender: TObject);
begin
  DBGrid1.Left := 0;
  DBGrid1.Width := Panel2.Width -1;
  DBGrid1.Top := 0;
  DBGrid1.Height := Panel2.Height div 2-1;
  DBGrid2.Left := 0;
  DBGrid2.Width := Panel2.Width -1;
  DBGrid2.Top    := Panel2.Height div 2;
  DBGrid2.Height := Panel2.Height div 2-1;
end;

通过上述内容,网格的高度在调整大小时会垂直调整大小。