Hard to believe.
When I read the new documentation I thought it would naturally lead to a DataModeler upgrade.
It would be far better than mantaining dozens of columns this way:
procedure OnColumnGenerated(Args: TColumnGeneratedArgs);
var
LTipo, LCampo : string;
begin
LTypeName := LowerCase(Args.CodeType.Name);
LFieldName := Lowercase(Args.Field.Name);
if (LTypeName = 'tperson') then begin
if (LFieldName = 'classrate') then begin
Args.Field.AddAttribute('DisplayName').AddRawArgument('''class rate''');
Args.Field.AddAttribute('Range').AddRawArgument('1, 10, ''Values must be %1:d up to %2:d for field %0:s''');
end else if (LFieldName = 'othercolumn') then begin
...
end;
end else if (LTypeName = 'TOtherType') then begin
...
end;
end;