anchor.diff:    end;
   end;
   { -------------------------------------------------------------------------- }
  -procedure TAbTreeView.Change(aNode: TTreeNode);
  +procedure TAbCustomTreeView.Change(aNode: TTreeNode);
   var
  -  Path: string;
  +  Filename: string;
   begin
     inherited;
  -  if aNode.Selected and Assigned(ListView) then begin
  -    Path := '';
  +  if aNode.Selected then begin
  +    Filename := '';
       if aNode <> Items.GetFirstNode then begin
  -      Path := aNode.Text;
  +      Filename := aNode.Text;
         aNode := aNode.Parent;
         while aNode <> Items.GetFirstNode do begin
  -        Path := aNode.Text + PathDelim + Path;
  +        Filename := aNode.Text + PathDelim + Filename;
           aNode := aNode.Parent;
         end;
       end;
  -    ListView.Path := Path;
  -  end;
  -end;
  -{ -------------------------------------------------------------------------- }
  -procedure TAbTreeView.DoChange(Sender: TObject);
  +    Path := Filename;
  +  end;
  +end;
  +{ -------------------------------------------------------------------------- }
  +procedure TAbCustomTreeView.DoChange(Sender: TObject);
   var
     Nodes: TStringList;
     ZipNode: TTreeNode;
  
positive.code:       Result[i] := PathDelim;
    if IsDelimiter(PathDelim, Result, Length(Result)) then
      SetLength(Result, Length(Result) - 1);
  end;
  { -------------------------------------------------------------------------- }
  function SortProc(aItem1, aItem2: TListItem; alParam: Integer): Integer;
  
negative.code:     end;
  end;
  { -------------------------------------------------------------------------- }
  procedure TAbCustomListView.SetArchive(aValue: TAbBaseBrowser);
  begin
    if Assigned(FArchive) then begin
      FArchive.RemoveFreeNotification(Self);
      if SameEvent(FArchive.OnChange, DoChange) then
        if Assigned(TreeView) then
          FArchive.OnChange := TreeView.DoChange
        else
          FArchive.OnChange := nil;
    end;
    FArchive := aValue;
    if Assigned(FArchive) then begin
      FArchive.FreeNotification(Self);
      FArchive.OnChange := DoChange;
      DoChange(Self);
    end;
    UpdateView;
  end;
  { -------------------------------------------------------------------------- }
  procedure TAbCustomListView.SetFlatList(aValue : Boolean);
  begin
    if aValue <> FFlatList then begin
      FFlatList := aValue;
      UpdateView;
    end;
  end;
  { -------------------------------------------------------------------------- }
  procedure TAbCustomListView.SetPath(aValue: string);
  begin
    if aValue <> FPath then begin
      FPath := aValue;
      if Assigned(TreeView) then
        TreeView.Path := aValue;
      if not FlatList then
        UpdateView;
    end;
  end;
  { -------------------------------------------------------------------------- }
  procedure TAbCustomListView.SetVisibleColumns(aValue : TAbViewColumns);
  const
    ColWidths: array[TAbViewColumn] of Integer = (
      180{vcName}, 110{vcFileType}, 130{vcLastModified}, 80{vcSize}, 50{vcRatio},
  