anchor.diff:    Result   := 0;
     for I    := 0 to Dataset.Fields.Count - 1 do
       Result := Result + (NativeInt(Dataset.Fields[I]) shr (I mod 16));
  +end;
  +
  +{ TSortByConditions }
  +
  +function TSortByConditions.GetCondition(Index: integer): TSortByCondition;
  +begin
  +  Result := TSortByCondition(inherited Items[Index]);
  +end;
  +
  +constructor TSortByConditions.Create;
  +begin
  +  inherited Create(TSortByCondition);
  +end;
  +
  +function TSortByConditions.Add: TSortByCondition;
  +begin
  +  Result := TSortByCondition(inherited Add);
  +end;
  +
  +{ TSortByCondition }
  +
  +constructor TSortByCondition.Create(Collection: TCollection);
  +begin
  +  inherited Create(Collection);
  +  FFieldName:= '';
  +  FSortType:= stAscending;
   end;
   
   
  
positive.code:     procedure DeleteRecord (AIndex :integer); virtual; abstract;
      procedure EditRecord (AIndex : integer; AModifiedFields : TList); virtual; abstract;
      procedure InsertRecord (AIndex : integer; AModifiedFields : TList); virtual; abstract;
  
      property VirtualFieldDefs : TVirtualFieldDefs read FVirtualFieldDefs;
    end;
  
negative.code:     BookmarkFlag : TBookmarkFlag;
    end;
  
    TVirtualFieldSortType = (stAscending, stDescending);
  
    { TSortByCondition }
  
    TSortByCondition = class (TCollectionItem)
    strict private
      FSortType : TVirtualFieldSortType;
      FFieldName : String;
    public
      constructor Create(Collection: TCollection); override;
  
      property SortType : TVirtualFieldSortType read FSortType write FSortType;
      property FieldName : String read FFieldName write FFieldName;
    end;
  
    { TSortByConditions }
  
    TSortByConditions = class (TCollection)
    private
      function GetCondition(Index :integer) : TSortByCondition;
    public
      constructor Create; reintroduce;
      function Add : TSortByCondition;
  
      property Items[index:integer]: TSortByCondition read GetCondition; default;
    end;
  
    TVirtualDatasetDataProvider = class
    strict private
      FVirtualFieldDefs : TVirtualFieldDefs;
  