Dynamically add tab sheets to page control and embed a form?

后端 未结 2 1575
轻奢々
轻奢々 2021-02-13 06:10

I\'m working on a module which consists of a page control. By default, this page control (TPageControl) shouldn\'t have any tab sheets (TTabSheet), but

相关标签:
2条回答
  • 2021-02-13 06:41

    1. How to dynamically create a tab sheet ?

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

    2. How to embed a form inside of a tab sheet ?

    To insert a form inside of a tab sheet use simply a parent change:

    Form2.Parent := TabSheet;
    Form2.Show;
    

    3. Will I need to manually free the forms embedded into a tab sheet when destroying it ?

    No, it is enough to free a tab sheet. In case when the forms will have a tab sheet, or to be more precise, the TWinControl as their Parent, that parent will take care of their release when freeing itself.

    0 讨论(0)
  • 2021-02-13 06:48

    David Heffernan is right.

    Form2.Parent := TabSheet;
    Form2.Show;
    

    This code just means Form2's parent is TabSheet, not it's owner.

    You can create the form like this:

    Form2 := TForm2.Create(nil);
    

    and then free it by yourself. or you can create a form like this:

    Form2 := TForm2.Create(Form1);
    

    Form1 is the owner of Form2, and it will automatically free Form2 when itself is freed.

    0 讨论(0)
提交回复
热议问题