La solución que me propone Ruben_Cu cierra la última instancia de Tab que se ha creado, por ello lo he intentado con un array de tabSheets de esta forma.
Código:
FORM1
private
Contador : Integer;
public
Tab : array of TTabSheet;
procedure TForm1.Button1Click(Sender: TObject);
var Formula2:TForm2;
Begin
inc(Contador);
Tab[Contador]:=TTabSheet.Create(nil);
with Tab[Contador] do
begin
PageControl:=PageControl1;
Name:='Pagina'+trim(inttostr(Contador));
Caption:=Tab[Contador].Name;
end;
Formula2:=TForm2.Create(Self);
with Formula2 do
begin
Parent:=Tab[Contador];
Caption:='Formulario'+trim(inttostr(Contador));
Numero:=Contador;
Show;
end;
end;
FORM2
public
Numero:integer;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
Form1.Tab[Numero].free;
end;
Pero me da un error de violación de acceso en: Tab[Contador]:=TTabSheet.Create(nil);