* Patch from Henrique Werlang to fix setting correct state when modifying data

This commit is contained in:
michael 2021-06-11 14:10:19 +00:00
parent 5fef7a40d0
commit 5a942fb610

View File

@ -2464,24 +2464,20 @@ end;
procedure TDataSet.CalculateFields(var Buffer: TDataRecord);
var
i: Integer;
OldState: TDatasetState;
begin
FCalcBuffer := Buffer;
if FState <> dsInternalCalc then
begin
OldState := FState;
FState := dsCalcFields;
try
ClearCalcFields(FCalcBuffer);
if not IsUniDirectional then
for i := 0 to FFieldList.Count - 1 do
if FFieldList[i].FieldKind = fkLookup then
FFieldList[i].CalcLookupValue;
finally
DoOnCalcFields;
FState := OldState;
end;
ClearCalcFields(FCalcBuffer);
if not IsUniDirectional then
for i := 0 to FFieldList.Count - 1 do
if FFieldList[i].FieldKind = fkLookup then
FFieldList[i].CalcLookupValue;
end;
DoOnCalcFields;
end;
procedure TDataSet.CheckActive;
@ -3142,10 +3138,20 @@ begin
end;
procedure TDataSet.GetCalcFields(var Buffer: TDataRecord);
var
i: Integer;
OldState: TDatasetState;
begin
if (FCalcFieldsCount > 0) or FInternalCalcFields then
CalculateFields(Buffer);
begin
OldState := FState;
FState := dsCalcFields;
try
CalculateFields(Buffer);
finally
FState := OldState;
end;
end;
end;
function TDataSet.GetCanModify: Boolean;