Da die Owner gesetzt wurden, müssten beim Schließen der Form eigentlich alle erstellten Controls automatisch wieder freigegeben werden.
Nur bei der Funktion von Button3Click bin ich noch etwas skeptisch. (sieht eigenartig aus)
Delphi-Quellcode:
procedure TDemo_Form.CallForm(aForm: TFormClass);
var
//newTabClass: TFormClass; // warum doppelt?
TabSheet: TcxTabSheet;
begin
if Assigned(aForm) then // hier wäre wohl eine Assertion passender, oder kommt nil so oft vor?
begin
TabSheet := TcxTabSheet.Create(PC);
TabSheet.PageControl := PC;
PCForm := aForm.Create(TabSheet); // ich würde hier nicht die Demo_Form als Owner nehmen
PCForm.BorderStyle := bsNone;
PCForm.Parent := TabSheet;
PCForm.Align := alClient;
PCForm.Show;
tabSheet.Caption := PCForm.Caption;
tabSheet.Name := PCForm.Name; // Name muß man nicht unbedingt setzen, außer man pfuscht mit FindControl rum
PC.ActivePage := TabSheet; // statt zu irgendeinen Index kann man auch direkt zum Gewollten hinblättern
Panel2.Caption := TabSheet.Name;
end;
end;