Como melhor renderizar um ícone de sobreposição sobre o ícone básico do nó Delphi TVirtualTreeView
Estou convertendo uma visualização em árvore do TTreeView padrão para usar TVirtualStringTree. Meu desafio final é implementar um recurso em que preciso desenhar um indicador de status de 'aprovação / reprovação' em cima do ícone do nó conhecido. Com o TTreeView, usei:
var
R : TRect;
begin
R := Node.DisplayRect( True );
StatusIconList.Draw( TreeView1.Canvas,
R.Left - StatusIconList.Width - 14,
R.Top,
3 {MyOverlayImageIndex} );
O resultado é a cruz vermelha sobre o ícone básico, como mostrado abaixo:
om TVirtualStringTree, esperava encontrar uma maneira melhor ou obter posições mais conhecidas para a posição do ícone de sobreposição necessária. Estou fazendo
procedure DrawFailed;
var
R : TRect;
begin
R := CellRect;
StatusIconList.Draw( TargetCanvas,
R.Left - StatusIconList.Width + 49 + Sender.GetNodeLevel( Node ) * 16,
R.Top,
siiFailed );
end;
Esta é a melhor solução? Existe uma maneira melhor de obter o canto superior / esquerdo do ícone básico sem a horrível chamada no nível do nó?