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 に答える