Color VirtualStringTree rows with hidden nodes

I'm 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 nodes. But with hidden nodes this doesn't work as the index stays the same. Is there an visible index or an easy workaround?

Thanks in advance.


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

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;
链接地址: http://www.djcxy.com/p/35072.html

上一篇: 如何在InitNode事件中将数据分配给VirtualStringTree的节点

下一篇: 带有隐藏节点的Color VirtualStringTree行