Tm = record
    h, w: Integer;
  end;

uses
  Generics.Collections;

var
  m1, m2: TList<Tm>;
  mr: Tm;
  i: Integer;
begin
  m1 := TList<Tm>.Create;
  for i := 1 to 5 do
  begin
    mr.h := i;
    mr.w := i;
    m1.Add(mr);
  end;
  m2 := m1;
  mr.h := 6;
  mr.w := 6;
  m2.Add(mr);
  mr := m2.Items[5];
  ShowMessageFmt('m1.item[5].h:=%D,m2.item[5].w:=%D',
    [m1.Items[5].h, m1.Items[5].w]);
  FreeAndNil(m1);
end;