anchor.diff:  
   procedure TUramakiBaseGridPlate.OnSelectEditor(Sender: TObject; Column: TColumn; var Editor: TWinControl);
   begin
  +  if FRunningDoUpdateChilds then
  +    exit;
     DoUpdateChilds(nil);
   end;
   
  
positive.code:   FLastSelectedRowsCount:= 0;
    FLastSelectedRowsHash := '';
    Self.AutomaticChildsUpdateMode:= cuOnChangeSelection;
  end;
  
  destructor TUramakiBaseGridPlate.Destroy;
  
negative.code: var
    newHash : string;
  begin
    FRunningDoUpdateChilds := true;
    try
      if FAutomaticChildsUpdateMode = cuOnChangeSelection then
      begin
        if FGrid.SelectedRows.Count > 1 then
        begin
          newHash:= FGrid.SelectedRows.CalculateHashCode;
          if newHash <> FLastSelectedRowsHash then
          begin
            FLastSelectedRowsHash:= newHash;
            FLastSelectedRow := FGrid.DataSource.DataSet.Bookmark;
            FLastSelectedRowsCount := FGrid.SelectedRows.Count;
            if Assigned(Self.Parent) then
              InvokeChildsRefresh;
          end;
        end
        else begin
          if (FGrid.SelectedRows.Count = 0) and ((FGrid.DataSource.DataSet.BookmarkValid(FLastSelectedRow)) or (FLastSelectedRowsCount > 0)) then
          begin
            FLastSelectedRow:= nil;
            FLastSelectedRowsCount:= 0;
            if Assigned(Self.Parent) then
              InvokeChildsRefresh;
          end
          else
          begin
            if FGrid.DataSource.DataSet.CompareBookmarks(FLastSelectedRow, FGrid.DataSource.DataSet.Bookmark) <> 0 then
            begin
              FLastSelectedRow := FGrid.DataSource.DataSet.Bookmark;
              FLastSelectedRowsCount := 1;
              if Assigned(Self.Parent) then
                InvokeChildsRefresh;
            end;
          end;
        end;
      end
      else
      begin
        FLastSelectedRow:= nil;
        FLastSelectedRowsCount:= 0;
        if Assigned(Self.Parent) then
          InvokeChildsRefresh;
      end;
    finally
      FRunningDoUpdateChilds := false;
    end;
  end;
  
  procedure TUramakiBaseGridPlate.DoSelectAll(Sender: TObject);
  begin
    FGrid.OnSelectEditor:= nil;
    FGrid.OnCellClick:= nil;
    try
      FGridHelper.SelectAllRows;
    finally
      if AutomaticChildsUpdateMode = cuOnChangeSelection then
      begin
        FGrid.OnSelectEditor:= Self.OnSelectEditor;
        FGrid.OnCellClick := Self.OnCellClick;
        DoUpdateChilds(nil);
      end;
    end;
  end;
  
  procedure TUramakiBaseGridPlate.DoAutoAdjustColumns(Sender: TObject);
  