anchor.diff:      else
         lColumnTotalWidth := lColumnTotalWidth + FView.ColumnWidth[i] + 20;
     end;
  +  
     for i := 0 to FModel.Count-1 do
     begin
       if not FModel.Items[i].Deleted or FShowDeleted then
  
positive.code:     FView: TfpgStringGrid;
      FModel: TtiObject;
      FRowIndex: Integer;
  //    procedure   SetupFields;
    public
      constructor CreateCustom(AModel: TtiObject; AGrid: TfpgStringGrid; ADisplayNames: string; pRowIndex: integer; IsObserving: Boolean = True);
  
negative.code: end;
  
  constructor TCompositeListViewMediator.CreateCustom(AModel: TtiObjectList;
    AView: TfpgListView; AOnBeforeSetupField: TOnBeforeSetupField;
    ADisplayNames: string; IsObserving: Boolean);
  begin
    Create; // don't forget this
  
    FModel        := AModel;
    FView         := AView;
    FMediatorList := TObjectList.Create;
    FIsObserving  := IsObserving;
    FDisplayNames := ADisplayNames;
    FShowDeleted  := False;
  
    Assert(Assigned(AOnBeforeSetupField), 'OnBeforeSetupField not assigned');
    FOnBeforeSetupField := AOnBeforeSetupField;
  
    SetupGUIandObject;
  
    { TODO: This must be improved. If no ADisplayNames value maybe default to a
     single column listview using the Caption property }
    if (ADisplayNames <> '') and (tiNumToken(ADisplayNames, cFieldDelimiter) > 0) then
    begin
      CreateSubMediators;
    end;
  
    if IsObserving then
      FModel.AttachObserver(self);
    
  end;
  
  constructor TCompositeListViewMediator.CreateCustom(AModel: TtiObjectList;
    AView: TfpgListView; ADisplayNames: string; IsObserving: Boolean);
  begin
    Create; // don't forget this
    
    FModel        := AModel;
    FView         := AView;
    FMediatorList := TObjectList.Create;
    FIsObserving  := IsObserving;
    FDisplayNames := ADisplayNames;
    FShowDeleted  := False;
    
    SetupGUIandObject;
  
  