16

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

问题在于知道如何将选项卡表插入页面控件。我如何创建这个?一旦创建了它,以及每个表单中的表单,我如何遍历它们以销毁表单?

4

2 回答 2

37

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. 销毁时是否需要手动释放嵌入标签表的表单?

不,释放标签页就足够了。如果表单有一个标签页,或者更准确地说,TWinControl作为它们的Parent,该父级将在释放自身时处理它们的释放。

于 2012-09-02T03:37:09.693 回答
3

大卫赫弗南是对的。

Form2.Parent := TabSheet;
Form2.Show;

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

您可以像这样创建表单:

Form2 := TForm2.Create(nil);

然后自己释放它。或者您可以创建这样的表单:

Form2 := TForm2.Create(Form1);

Form1 是 Form2 的拥有者,它自己释放时会自动释放 Form2。

于 2012-09-02T07:54:19.583 回答