Color of VirtualStringTree Hidden Node Rows

I am currently using this code in the OnBeforeCellPaint event of my tree:

if Node.Index mod 2 = 0 then
begin
  TargetCanvas.Brush.Color := clBlack;
  TargetCanvas.FillRect(CellRect);
end
else
begin
  TargetCanvas.Brush.Color := clPurple;
  TargetCanvas.FillRect(CellRect);
end;

To color my knots. But this does not work with hidden nodes, since the index remains unchanged. Is there a visible index or an easy workaround?

Thanks in advance.

+4
source share
1 answer

There is currently no such method to get the node visibility index. But you can make your own, where you will go through visible nodes and count each iteration. Something like this (how you implement it in real code):

function GetVisibleIndex(Tree: TBaseVirtualTree; Node: PVirtualNode): Integer;
var
  P: PVirtualNode;
begin
  Assert(Assigned(Node), 'Node must not be nil!');
  Assert(Tree.IsVisible[Node], 'Node must be visible!');

  Result := 0;

  P := Tree.GetFirstVisible;
  while Assigned(P) and (P <> Node) do
  begin
    Inc(Result);
    P := Tree.GetNextVisible(P);
  end;
end;
+4
source

All Articles