anchor.diff:      FModel.DetachObserver(Self);
     FModel  := nil;
     FView   := nil;
  -  
     inherited BeforeDestruction;
   end;
   
  
positive.code:   
    for i := 0 to FModel.Count-1 do
    begin
      if not FModel.Items[i].Deleted or FShowDeleted then
        DoCreateItemMediator(FModel.Items[i], i);
    end;
  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;
  