anchor.diff:    FAllowFreeTypedText := true;
     FFractionalPartDigits:= 0;
     FDisplayFormat:= '';
  +  FTimeMaxDistanceInMonths:= 0;
   end;
   
   destructor TmEditorLineConfiguration.Destroy;
  
positive.code: 
      property EditorKind : TmEditorLineKind read FEditorKind write FEditorKind;
      property DataType : TmEditorLineDataType read FDataType write FDataType;
      property DataProvider : IVDDataProvider read FDataProvider write FDataProvider;
  
      property Caption: String read FCaption write FCaption;
  
negative.code:     aActualValue:= null;
  end;
  
  procedure TmEditingPanel.CheckYear(const aOldStringValue: string; const aDataType: TmEditorLineDataType; const aDistanceInMonths : integer; var aNewStringValue: string; var aActualValue: variant);
  var
    tmp : integer;
  begin
    if aNewStringValue <> '' then
    begin
      if not IsNumeric(aNewStringValue, false) then
      begin
        aNewStringValue := aOldStringValue;
        TmToast.ShowText(SErrorNotANumber);
      end
      else
      begin
        tmp := StrToInt(aNewStringValue);
        if (aDataType = dtCurrentYearOrInTheFuture) and (tmp < YearOf(Date)) then
        begin
          aNewStringValue:= aOldStringValue;
          TmToast.ShowText(SErrorYearInThePast);
        end
        else if (aDataType = dtCurrentYearOrInThePast) and (tmp > YearOf(Date)) then
        begin
          aNewStringValue:= aOldStringValue;
          TmToast.ShowText(SErrorYearInTheFuture);
        end
        else if (aDistanceInMonths > 0) and (abs(YearOf(Date) - tmp) > (aDistanceInMonths div 12)) then
        begin
          aNewStringValue:= aOldStringValue;
          TmToast.ShowText(SErrorYearTooFaraway);;
        end
        else
          aActualValue := tmp;
      end;
    end
    else
      aActualValue:= null;
  end;
  
  procedure TmEditingPanel.CheckFloat(const aOldStringValue: string; var aNewStringValue: string; var aActualValue: variant; const aLineConfiguration : TmEditorLineConfiguration);
  var
    tmpDouble : double;
  