anchor.diff:      begin
         aNewStringValue := aOldStringValue;
         TmToast.ShowText(SErrorNotANumber);
  +    end;
  +  end
  +  else
  +    aActualValue := null;
  +end;
  +
  +procedure TmEditingPanel.CheckColor(const aOldStringValue: string; var aNewStringValue: string; var aActualValue: variant);
  +var
  +  tmpColor : TColor;
  +begin
  +  if aNewStringValue <> '' then
  +  begin
  +    if TryToUndestandColorString(aNewStringValue, tmpColor) then
  +    begin
  +      aNewStringValue := ColorToString(tmpColor);
  +      aActualValue:= aNewStringValue;
  +    end
  +    else
  +    begin
  +      aNewStringValue := aOldStringValue;
  +      TmToast.ShowText(SErrorNotAColor);
       end;
     end
     else
  
positive.code: function TmEditingPanel.OnGetValue(const aCol, aRow : integer; const aSource: TOnGetValueSource; var aNewDisplayValue : string; var aNewActualValue: variant): boolean;
  var
    calendarFrm : TmCalendarDialog;
    keyFieldName, errorMessage : String;
    curLine : TEditorLine;
    lookupFrm : TmLookupFrm;
    tmpVirtualFieldDefs : TmVirtualFieldDefs;
    OldStringValue : string;
    OldActualValue : Variant;
  begin
    Result := false;
  
  
negative.code:     end
      else if (curLine.Configuration.DataType = dtDate) and (curLine.Configuration.ChangedValueDestination is TNullableDateTime) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableDateTime).AsString(false)
      else if (curLine.Configuration.DataType = dtColor) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableColor).AsString
      else if (curLine.Configuration.DataType = dtTime) and (curLine.Configuration.ChangedValueDestination is TNullableTime) then
        str := (curLine.Configuration.ChangedValueDestination as TNullableTime).AsString
      else if ((curLine.Configuration.EditorKind = ekLookup) or ((curLine.Configuration.EditorKind = ekLookupPlusWizard))) and (curLine.Configuration.ChangedValueDestination.NotNull) then
  