Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 upon initialization, it should dynamically insert these pages and embed a form inside of it.

The issue comes with knowing how to insert a tab sheet into the page control. How do I create this? And once it's created, along with the forms inside each one, how do I iterate through them to destroy the forms?

like image 610
Jerry Dodge Avatar asked Sep 02 '12 03:09

Jerry Dodge


1 Answers

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.

like image 108
TLama Avatar answered Sep 20 '22 16:09

TLama