procedure TDataSet.InitFieldDefsFromfields;
var i : integer;
begin
if FieldDefs.count = 0 then
begin
FieldDefs.BeginUpdate;
try
for i := 0 to Fields.Count-1 do with fields[i] do
if not (FieldKind in [fkCalculated,fkLookup]) then // Do not add fielddefs for calculated/lookup fields.
begin
FFieldDef:=FieldDefs.FieldDefClass.Create(FieldDefs,FieldName,DataType,Size,Required,FieldDefs.Count+1);
with FFieldDef do
begin
if Required then Attributes := attributes + [faRequired];
if ReadOnly then Attributes := attributes + [faReadOnly];
if DataType = ftBCD then precision := (fields[i] as TBCDField).Precision
else if DataType = ftFMTBcd then precision := (fields[i] as TFMTBCDField).Precision;
end;
end;
finally
FieldDefs.EndUpdate;
end;
end;
end;