Поскольку «Rec» является свойством, компилятор обрабатывает его немного по-другому, потому что он должен сначала оценить «чтение» свойства decl. Учтите это, что семантически эквивалентно вашему примеру:
...
property Rec: TRec read GetRec write FRec;
...
Если вы посмотрите на это так, вы увидите, что первая ссылка на «Rec» (перед точкой «.») Должна вызвать GetRec, что создаст временную локальную копию Rec. Эти временные файлы предназначены только для чтения. Это то, с чем вы сталкиваетесь.
Еще одна вещь, которую вы можете сделать здесь, это выделить отдельные поля записи в качестве свойств содержащего класса:
...
property RecField: Integer read FRec.A write FRec.A;
...
Это позволит вам напрямую назначить через свойство этому полю встроенную запись в экземпляре класса.