title: How can i create a new frame instance to be hosted into each dynamic tabsheet in Tpagecontrol?
body: <p>i created dynamic tabsheet in page control   , and then each page needs to host a frame with several component like Tedit and etc . these Tedit in my frame host data from an ini file .
  if i do my tabsheet static it works ! but i need to do my tabsheet dynamic ... i tried to create a frame  but when i put in my loop i get error</p>
  <p>how can i do it ?</p>
  <p>thanks !</p>
  <pre><code>unit DlgXRechnung;
  
  interface
  
  uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Xml.xmldom,
    Xml.XMLIntf, Vcl.Buttons, Xml.XMLDoc, IniFiles, Vcl.ComCtrls;
  
  type
    TDlg_XRechnung = class(TForm)
      Panel1: TPanel;
      Panel2: TPanel;
      Panel3: TPanel;
      Panel4: TPanel;
      X_Rechnung: TXMLDocument;
      Memo_XML: TMemo;
      Btn_Laden: TBitBtn;
      OpenDialog_Datei: TOpenDialog;
      Panel5: TPanel;
      Label1: TLabel;
      Edit_LeitwegeID: TLabeledEdit;
      Edit_Bestellnummer: TLabeledEdit;
      Edit_Projektreferenz: TLabeledEdit;
      Edit_Vertragsnummer: TLabeledEdit;
      Edit_Rechnungsnummer: TLabeledEdit;
      Edit_Rechnungsdatum: TDateTimePicker;
      Label2: TLabel;
      Label3: TLabel;
      Edit_Leistungsdatum: TDateTimePicker;
      Edit_Bemerkung: TMemo;
      Label4: TLabel;
      Btn_XML_erstellen: TBitBtn;
      Btn_Close: TBitBtn;
      Panel6: TPanel;
      Label5: TLabel;
      Edit_Rechnungsersteller_Name: TLabeledEdit;
      Edit_Rechnungsersteller_Adresse: TLabeledEdit;
      Edit_Rechnungsersteller_PLZ: TLabeledEdit;
      Edit_Rechnungsersteller_UST_ID: TLabeledEdit;
      Edit_Rechnungsersteller_Ort: TLabeledEdit;
      Edit_Rechnungsersteller_Land: TLabeledEdit;
      Edit_Rechnungsersteller_Firmenbuch: TLabeledEdit;
      Edit_Rechnungsersteller_Steuerart: TLabeledEdit;
      GroupBox1: TGroupBox;
      Edit_Waehrung_Rechnung: TLabeledEdit;
      Edit_Waehrung_UST: TLabeledEdit;
      Panel7: TPanel;
      Label6: TLabel;
      Edit_Rechnungsempfänger_Name: TLabeledEdit;
      Edit_Rechnungsempfänger_Adresse: TLabeledEdit;
      Edit_Rechnungsempfänger_PLZ: TLabeledEdit;
      LabeledEdit4: TLabeledEdit;
      Edit_Rechnungsempfänger_Ort: TLabeledEdit;
      Edit_Rechnungsempfänger_Land: TLabeledEdit;
      LabeledEdit7: TLabeledEdit;
      LabeledEdit8: TLabeledEdit;
      PC_Positionen: TPageControl;
      procedure Btn_LadenClick(Sender: TObject);
      procedure FormShow(Sender: TObject);
      procedure FormCreate(Sender: TObject);
      procedure Btn_XML_erstellenClick(Sender: TObject);
      procedure Btn_CloseClick(Sender: TObject);
      procedure PC_PositionenChange(Sender: TObject);
    private
      INIDateiname : string;
      INIDatei : TIniFile;
      PDFDatei : string;
      XRechnungDatei : string;
      Version : integer;
      DebugMode : integer;
      AnzahlPositinen : integer;
      procedure INIDatei_einlesen;
      procedure XML_erstellen;
      { Private-Deklarationen }
    public
      { Public-Deklarationen }
    end;
  
  var
    Dlg_XRechnung: TDlg_XRechnung;
  
  implementation
  
  {$R *.dfm}
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.Btn_CloseClick(Sender: TObject);
  begin
    Close;
  end;
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.Btn_LadenClick(Sender: TObject);
  begin
    if OpenDialog_Datei.Execute then
    begin
      INIDateiname := OpenDialog_Datei.FileName;
    end;
    if Trim(INIDateiname) &lt;&gt; '' then INIDatei_einlesen;
  end;
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.Btn_XML_erstellenClick(Sender: TObject);
  begin
    XML_erstellen;
  end;
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.FormCreate(Sender: TObject);
  begin
    INIDateiname := '';
  end;
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.FormShow(Sender: TObject);
  begin
    if Trim(ParamStr(1)) &lt;&gt; '' then
    begin
      INIDateiname := ParamStr(1);
      INIDatei_einlesen;
    end;
  end;
  // -----------------------------------------------------------------------------
  procedure TDlg_XRechnung.INIDatei_einlesen;
  var NeueSeite : TTabSheet;
    i,l: Integer;
  begin
    try
      INIDatei                := TIniFile.Create(INIDateiname);
      Version                 := INIDatei.ReadInteger('INI','Version', 1);
      DebugMode               := INIDatei.ReadInteger('INI','DebugMode', 0);
      PDFDatei                := INIDatei.ReadString('PDF','PDFName', '');
      XRechnungDatei          := INIDatei.ReadString('PDF','XInvoice', '');
      Edit_LeitwegeID.Text    := INIDatei.ReadString('InvData','BT-10', '');
      Edit_Bestellnummer.Text := INIDatei.ReadString('InvData','BT-13', '');
      Edit_Projektreferenz.Text := INIDatei.ReadString('InvData','BT-11', '');
      Edit_Vertragsnummer.Text := INIDatei.ReadString('InvData','BT-12', '');
      Edit_Rechnungsnummer.Text := INIDatei.ReadString('InvData','BT-1', '');
      Edit_Rechnungsdatum.Date := INIDatei.ReadDate('InvData','BT-2', now);
      Edit_Leistungsdatum.Date := INIDatei.ReadDate('InvData','BT-9', now);
      Edit_Bemerkung.Text := INIDatei.ReadString('InvData','BT-22', '');
      Edit_Rechnungsersteller_Name.Text := INIDatei.ReadString('InvErst','BT-27', '');
      Edit_Rechnungsersteller_UST_ID.Text := INIDatei.ReadString('InvErst','BT-31', '');
      Edit_Rechnungsersteller_Adresse.Text := INIDatei.ReadString('InvErst','BT-35', '') + INIDatei.ReadString('InvErst','BT-36', '');
      Edit_Rechnungsersteller_PLZ.Text := INIDatei.ReadString('InvErst','BT-38', '');
      Edit_Rechnungsersteller_Ort.Text := INIDatei.ReadString('InvErst','BT-37', '');
      Edit_Rechnungsersteller_Land.Text := INIDatei.ReadString('InvErst','BT-40', '');
      Edit_Rechnungsempfänger_Name.Text := INIDatei.ReadString('InvEmp','BT-44','');
      Edit_Rechnungsempfänger_Adresse.Text := INIDatei.ReadString('InvEmp','BT-50', '') + INIDatei.ReadString('InvEmp','BT-51', '');
      Edit_Rechnungsempfänger_PLZ.Text := INIDatei.ReadString('InvEmp','BT-53', '');
      Edit_Rechnungsempfänger_Ort.Text := INIDatei.ReadString('InvEmp','BT-52', '');
      Edit_Rechnungsempfänger_Land.Text := INIDatei.ReadString('InvEmp','BT-55', '');
  
      AnzahlPositinen := INIDatei.ReadInteger('POS','AnzPos', 1);
      for i := 1 to AnzahlPositinen do
      begin
        NeueSeite := TTabSheet.Create(PC_Positionen);
        NeueSeite.PageControl := PC_Positionen;
        NeueSeite.Caption := 'Position ' + IntToStr(i);
  
  
  
  
      end;
  
    finally
      INIDatei.Free;
    end;
  end;
  
  </code></pre>