Question

is that possible to hide specific nodes in VirtualStringTree? I'm implementing "filtering" feature (the VST acts as a list with columns), and I'd like to avoid reloading content each time the filter is changed - instead, much faster would be to tell VST not to render specific items ... any solutions?

Was it helpful?

Solution

VirtualTree.IsVisible[Node] := False;

OTHER TIPS

There are problem using .IsVisible[] or .IsFiltered[] and it is that is very slow, i've probe filter in a tree with amoung of 25,000 nodes and is too slow.

I've found one aproach that is faster and solves the problem with scrollbar size when using Include(Node.states,vsFiltered) or (Node.States,vsVisible) is used, it consists on change manually the Node.TotalHeight value acording with the number of visible nodes (not Filtered).

For example i'm filtering 25,000 nodes and the code i was using is the follow :

procedure TFC_Articulo.Filtrar(Filtro:String);
var
 Node:PVirtualNode;
 Data:PArticulo;
begin
  Node := TV.GetFirst;
  TV.RootNode.TotalHeight:=TV.DefaultNodeHeight;  // The Trick
  while Assigned(Node) do
  begin
    Data:=TV.GetNodeData(Node);
    Exclude(Node.States,vsFiltered);     // By default all nodes wil be Visible
    if ComparationHereForDetermineFiltering then
       Include(Node.States,vsFiltered)   // This node wil be filtered
    else
       Inc(TV.RootNode.TotalHeight,Node.NodeHeight);  // Determine the Height of scrollbar
    Node:=TV.GetNext(Node);
  end;
  TV.RootNode.TotalHeight:=TV.RootNode.TotalHeight+TV.BottomSpace;
  TV.UpdateScrollBars(True);
end;

Hope this helps Sorry bad english...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top