anchor.diff:    protected
   //    procedure   SetupFields;
     public
  -    constructor CreateCustom(AModel: TtiObject; AGrid: TfpgStringGrid; ADisplayNames: string; pRowIndex: integer; IsObserving: Boolean = True);
  +    constructor CreateCustom(AModel: TtiObject; AGrid: TfpgStringGrid; ADisplayNames: string; ARowIndex: integer; IsObserving: Boolean = True);
       procedure   BeforeDestruction; override;
       procedure   Update(ASubject: TtiObject); override;
     published
  
positive.code:     FModel.DetachObserver(Self);
    FModel  := nil;
    FView   := nil;
    
    inherited BeforeDestruction;
  end;
  
  
negative.code:   DataAndPropertyValid(AData);
  end;
  
  procedure TCompositeStringGridMediator.DoCreateItemMediator(AData: TtiObject; ARowIdx: Integer);
  var
    i: Integer;
    lField: string;
    lFieldName: string;
    lMediatorView: TStringGridRowMediator;
  begin
    FView.Objects[0, ARowIdx] := AData;
    for i := 0 to tiNumToken(FDisplayNames, cFieldDelimiter)-1 do
    begin
      lField := tiToken(FDisplayNames, cFieldDelimiter, i+1);
      lFieldName := tiFieldName(lField);
      FView.Cells[i, ARowIdx] := AData.PropValue[lFieldName];
      lMediatorView := TStringGridRowMediator.CreateCustom(AData, FView, FDisplayNames, ARowIdx, FIsObserving);
      FMediatorList.Add(lMediatorView);
    end;
  end;
  