Динамически добавлять вкладки для управления страницей и встраивать форму?
Я работаю над модулем, состоящим из элемента управления страницей. По умолчанию этот элемент управления страницей (TPageControl
) не должен иметь никаких вкладок (TTabSheet
), но при инициализации он должен динамически вставлять эти страницы и вставлять внутри него форму.
Проблема связана с пониманием того, как вставить вкладку в элемент управления страницы. Как это создать? И как только он создается вместе с формами внутри каждого из них, как мне перебирать их, чтобы уничтожить формы?
Ответы
Ответ 1
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
, этот родитель позаботится об их освобождении, освободив себя.
Ответ 2
Дэвид Хеффернан прав.
Form2.Parent := TabSheet;
Form2.Show;
Этот код просто означает, что родитель Form2 является TabSheet, а не владельцем.
Вы можете создать форму следующим образом:
Form2 := TForm2.Create(nil);
а затем освободите его самостоятельно.
или вы можете создать такую форму:
Form2 := TForm2.Create(Form1);
Form1 является владельцем Form2, и он автоматически освободит Form2, когда он будет освобожден.