initFieldDefsFromFields method

void initFieldDefsFromFields()

Implementation

void initFieldDefsFromFields() {
  if (fieldDefs.count == 0) {
    fieldDefs.beginUpdate();
    try {
      for (var i = 0; i < fields.count; i++) {
        final f = fields[i];
        if (f.fieldKind != TFieldKind.fkCalculated &&
            f.fieldKind != TFieldKind.fkLookup) {
          // Do not add fielddefs for calculated/lookup fields.
          f._fieldDef = fieldDefs.fieldDefClass(fieldDefs, f.fieldName,
              f.dataType, f.size, f.required, fieldDefs.count + 1);
          final fd = f._fieldDef!;
          if (f.required) {
            fd.attributes = {...fd.attributes, TFieldAttribute.faRequired};
          }
          if (f.readOnly) {
            fd.attributes = {...fd.attributes, TFieldAttribute.faReadonly};
          }
          if (f.dataType == TFieldType.ftBCD) {
            fd.precision = (f as TBCDField).precision;
          } else if (f.dataType == TFieldType.ftFMTBcd) {
            fd.precision = (f as TFMTBCDField).precision;
          }
        }
      }
    } finally {
      fieldDefs.endUpdate();
    }
  }
}