动态添加标签页到页面控件并嵌入表单?

时间:2012-09-02 03:30:05

标签: delphi tpagecontrol

我正在研究一个由页面控件组成的模块。默认情况下,此页面控件(TPageControl)不应包含任何选项卡表(TTabSheet),但在初始化时,它应动态插入这些页面并在其中嵌入表单。

问题在于知道如何将标签页插入页面控件。我该如何创建呢?一旦它被创建,连同每个窗体内的表格,我如何迭代它们来销毁表格?

2 个答案:

答案 0 :(得分:26)

1。如何动态创建标签页?

procedure TForm1.Button1Click(Sender: TObject);
var
  TabSheet: TTabSheet;
begin
  TabSheet := TTabSheet.Create(PageControl1);
  TabSheet.Caption := 'New Tab Sheet';
  TabSheet.PageControl := PageControl1;
end;

2。如何在表格中嵌入表单?

要在标签页内插入表单,只需使用父更改:

Form2.Parent := TabSheet;
Form2.Show;

第3。在销毁时,我是否需要手动释放嵌入到标签页中的表单?

不,它足以释放标签页。如果表单有一个标签页,或者更确切地说,TWinControlParent,那么父母将在释放自己时将其释放。

答案 1 :(得分:2)

David Heffernan是对的。

Form2.Parent := TabSheet;
Form2.Show;

此代码仅表示Form2的父级是TabSheet,而不是它的所有者。

您可以像这样创建表单:

Form2 := TForm2.Create(nil);

然后自己释放它。 或者你可以创建一个这样的表格:

Form2 := TForm2.Create(Form1);

Form1是Form2的所有者,当它自己被释放时,它将自动释放Form2。