Доброго времени суток!
Есть 
INI-файл, в котором может быть сколько угодно секций. Хочу для каждой секции создавать динамически 
GroupBox и стремя 
Edit, куда будут загружаться значения полей (Nomer, Priem, Vydacha) для последующего редактирования и сохранения обратно в 
INI-файл.
[Pos0]
Nomer=0101
Priem=9:00
Vydacha=9:30
[Pos1]
Nomer=0102
Priem=10:00
Vydacha=10:30
[Pos2]
Nomer=0103
Priem=11:00
Vydacha=11:30 
Реализация получилась наполовину, без сохранения и ущербная с точки зрения кода.
procedure TFormMain.LoadStaff(Path: String);
var
  IniFile: TIniFile;
  SL: TStringList;
  I: Integer;
  MyLabel: TLabel;
  MyEdit: TEdit;
begin
  try
    IniFile := TIniFile.Create(Path);
    SL := TStringList.Create;
    try
      IniFile.ReadSections(SL);
      SetLength(GBArr, SL.Count);
      for I := 0 to SL.Count - 1 do
      begin
        // GroupBox
        GBArr[I] := TGroupBox.Create(ScrollBox1);
        GBArr[I].Parent := ScrollBox1;
        GBArr[I].Height := 58;
        GBArr[I].Width := 408;
        GBArr[I].Left := 4;
        GBArr[I].Top := 4 + ((I) * 62);
        GBArr[I].Caption := SL.Strings[I];
        // Labels
        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 8;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Номер';
        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 142;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Приём';
        MyLabel := TLabel.Create(GBArr[I]);
        MyLabel.Parent := GBArr[I];
        MyLabel.Left := 276;
        MyLabel.Top := 16;
        MyLabel.Caption := 'Выдача';
        // Edits
        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 4;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 0;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Nomer', '');
        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 138;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 1;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Priem', '');
        MyEdit := TEdit.Create(GBArr[I]);
        MyEdit.Parent := GBArr[I];
        MyEdit.Width := 130;
        MyEdit.Left := 272;
        MyEdit.Top := 33;
        MyEdit.TabOrder := 2;
        MyEdit.Text := IniFile.ReadString(SL.Strings[I], 'Vydacha', '');
      end;
    except
    end;
  finally
    FreeAndNil(IniFile);
    FreeAndNil(SL);
  end;
end;
Может у кого есть какие варианты реализации лучше?