Свойство IsVisible возвращается, только если узлы были скрыты или нет, как вы нашли. Единственный способ узнать, находится ли узел на экране, - это использовать GetDisplayRect, как это было предложено, и затем проверить его на соответствие клиентскому прямоугольнику древовидного представления.
Однако, если я понимаю, что вы пытаетесь сделать правильно, опция toCenterScrollIntoView в SelectionOption для VirtualTreeView даст вам желаемое поведение без необходимости проверять, находится ли узел в видимой области или нет.
есть (C ++):
TreeView->TreeOptions->SelectionOptions =
TreeView->TreeOptions->SelectionOptions << toCenterScrollIntoView ;
...
ScrollIntoView(Node);