我有一个delphi应用程序,它使用了PageControl
,其中TabSheets
的数量为TabSheets
。我还在运行时创建新的TabSheet
并使用预定义帧的实例填充它们。这些框架效果很好,除了不以Frame.Align := alClient
为中心的美容问题。我曾尝试使用CreateNewPage(3);
NewLimitedChoiceFrame := TLimitedChoiceFrame.Create(NewInputPage);
NewLimitedChoiceFrame.Parent := NewInputPage;
,但是没有这样做。相关代码如下:
CreateNewPage
TabSheet
创建PageControl
的新实例,并使NewInputPage
成为其所有者和父级。结果将分配给全局变量{{1}}。
答案 0 :(得分: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 points out只是将控件的Anchors
设置为[]
,因此VCL框架会在调整其父级的大小时将控件置于中心位置。