I think the procedure should read:
procedure TsCustomNumEdit.SetText(const AValue: string);
var
Val: String;
begin
if not (csReading in ComponentState) then begin
Val := TextToValText(AValue);
if Val <> '' then FValue := CheckValue(StrToFloat(Val))
else FValue := 0;
DataChanged;
SkinData.Invalidate;
end;
end;
But again: this stems from a TsDBCalcEdit control that’s being filled from the database. Not by the user. Why do you want to do a CheckValue in that case? What possible correction can the user make if the Min/Max message pops up? He/she is not editing the field at that time, program logic may even prohibit editing of the field!