TAdvDirectoryTreeView Sort for file size

Hi all,

I use TAdvDirectoryTreeView to show files in a path selected with:

  // updates file tree view with new file list
  FileTreeView.LoadDirectory(FPath, True);
end;

By default, files are sorted by name.
There is a way to sort them for size?

Thank you for your support.

You can use the following code to custom sort on the size column:

uses
  Math;

procedure TForm21.AdvDirectoryTreeView1NodeCompare(Sender: TObject; Node1,
  Node2: TAdvTreeViewNode; AColumn: Integer; var ACompareResult: Integer);
var
  tn: TAdvDirectoryTreeViewNode;
  tn2: TAdvDirectoryTreeViewNode;
  fad: TWin32FileAttributeData;
  fst, fst2: Int64;
begin
  tn := Node1 as TAdvDirectoryTreeViewNode;
  tn2 := Node2 as TAdvDirectoryTreeViewNode;

  fst := 0;
  fst2 := 0;

  if FileExists(tn.FileName) and FileExists(tn2.FileName) then
  begin
    GetFileAttributesEx(PChar(tn.FileName), GetFileExInfoStandard, @fad);
    fst := Int64(fad.nFileSizeLow) or Int64(fad.nFileSizeHigh shl 32);

    GetFileAttributesEx(PChar(tn2.FileName), GetFileExInfoStandard, @fad);
    fst2 := Int64(fad.nFileSizeLow) or Int64(fad.nFileSizeHigh shl 32);
  end;

  ACompareResult := CompareValue(fst, fst2);
end;

procedure TForm21.FormCreate(Sender: TObject);
begin
  AdvDirectoryTreeView1.LoadDirectory('E:\Delphi\temp\Files', True);
  AdvDirectoryTreeView1.Sort(1, True);
end;

1 Like