1

我有一个使用PageControl带有多个TabSheets. 我还在TabSheets运行时创建新的并用预定义帧的实例填充它们。这些框架效果很好,除了不集中在TabSheet. 我曾尝试使用Frame.Align := alClient,但没有这样做。相关代码如下:

CreateNewPage(3);
NewLimitedChoiceFrame := TLimitedChoiceFrame.Create(NewInputPage);
NewLimitedChoiceFrame.Parent := NewInputPage;

CreateNewPage创建 a 的新实例TabSheet并使其成为PageControl它的所有者和父级。结果被分配给全局变量NewInputPage

4

1 回答 1

3

要在其父控件中居中,请执行以下操作:

procedure CentreControl(Control: TControl);
begin
  Control.Left := (Control.Parent.ClientWidth-Control.Width) div 2;
  Control.Top := (Control.Parent.ClientHeight-Control.Height) div 2;
end;

调用此函数,传递帧。显然,您需要等到分配了父级后再这样做。

如果页面控件可以在运行时调整大小,请从选项卡的 OnResize 事件中添加对此函数的调用。或者,正如NGLN 指出的那样,只需将控件设置Anchors[],VCL 框架就会在调整其父控件的大小时注意使控件居中。

于 2012-09-27T01:24:54.640 回答