anchor.diff:          end;
         end;
       end;
  -  end;
  +  end
  +  else
  +    exit;
   
     if Assigned(FOnValidateValueEvent) then
     begin
  -    FOnValidateValueEvent(Self, curLine.Name, RealOldValue, NewValue, curLine.OldActualValue, curLine.ActualValue, errorMessage);
  +    FOnValidateValueEvent(Self, curLine.Name, OldValue, NewValue, OldActualValue, curLine.ActualValue, errorMessage);
       if errorMessage <> '' then
         TmToast.ShowText(errorMessage);
     end;
   
  -
     if NewValue <> OldValue then
     begin
  +    curLine.Changed := true;
  +
       if Assigned(FOnEditValueEvent) then
         FOnEditValueEvent(Self, curLine.Name, NewValue, curLine.ActualValue);
  -
  -    curLine.Changed := curLine.Changed or (NewValue <> RealOldValue);
     end;
   end;
   
   function TmEditingPanel.OnGetValue(const aCol, aRow : integer; var aNewDisplayValue : string; var aNewActualValue: variant): boolean;
   var
     calendarFrm : TmCalendarDialog;
  -  str, keyFieldName : String;
  +  keyFieldName, errorMessage : String;
     curLine : TEditorLine;
     lookupFrm : TmLookupFrm;
     tmpVirtualFieldDefs : TmVirtualFieldDefs;
  -  tmpValue : Variant;
  +  OldStringValue : string;
  +  OldActualValue : Variant;
   begin
     Result := false;
   
  
positive.code:     Changed: boolean;
      Configuration: TmEditorLineConfiguration;
      ActualValue : variant;
      OldActualValue : variant;
      OldDisplayValue : TNullableStringRecord;
      EditorExecuted : boolean;
    public
      constructor Create;
      destructor Destroy; override;
  
negative.code:   Name:= '';
    Index:= 0;
    ActualValue:= Null;
    Changed:= false;
  end;
  
  destructor TEditorLine.Destroy;
  