anchor.diff:    Name:= '';
     Index:= 0;
     ActualValue:= Null;
  -  OldActualValue:= Null;
  -  EditorExecuted:= false;
  -  OldDisplayValue.SetNull;
     Changed:= false;
  -  EditorExecuted:= false;
   end;
   
   destructor TEditorLine.Destroy;
  
positive.code:         end;
        end;
      end;
    end;
  
    if Assigned(FOnValidateValueEvent) then
    begin
      FOnValidateValueEvent(Self, curLine.Name, RealOldValue, NewValue, curLine.OldActualValue, curLine.ActualValue, errorMessage);
      if errorMessage <> '' then
        TmToast.ShowText(errorMessage);
    end;
  
  
    if NewValue <> OldValue then
    begin
      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;
    curLine : TEditorLine;
    lookupFrm : TmLookupFrm;
    tmpVirtualFieldDefs : TmVirtualFieldDefs;
    tmpValue : Variant;
  begin
    Result := false;
  
  
negative.code:   if curLine.Configuration.ReadOnly <> roAllowEditing then
      exit;
  
    OldStringValue := FValueListEditor.Cells[aCol, aRow];
    OldActualValue := curLine.ActualValue;
  
    if curLine.Configuration.EditorKind = ekCalendar then
    begin
      calendarFrm := TmCalendarDialog.Create;
      try
        if OldStringValue <> '' then
        begin
          try
            calendarFrm.Date := StrToDate(OldStringValue);
          except
            // ignored
          end;
        end;
        if calendarFrm.Execute then
        begin
          aNewDisplayValue := DateToStr(calendarFrm.Date);
          curLine.ActualValue:= calendarFrm.Date;
          Result := true;
        end;
  