将Tframe置于TTabSheet中;

时间:2012-09-27 00:37:16

标签: delphi tframe

我有一个delphi应用程序,它使用了PageControl,其中TabSheets的数量为TabSheets。我还在运行时创建新的TabSheet并使用预定义帧的实例填充它们。这些框架效果很好,除了不以Frame.Align := alClient为中心的美容问题。我曾尝试使用CreateNewPage(3); NewLimitedChoiceFrame := TLimitedChoiceFrame.Create(NewInputPage); NewLimitedChoiceFrame.Parent := NewInputPage; ,但是没有这样做。相关代码如下:

CreateNewPage

TabSheet创建PageControl的新实例,并使NewInputPage成为其所有者和父级。结果将分配给全局变量{{1}}。

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框架会在调整其父级的大小时将控件置于中心位置。