我正在使用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?
答案 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;
通过上述内容,网格的高度在调整大小时会垂直调整大小。