Это с Delphi XE7. У меня есть процедура, которая добавляет узлы в TtreeView. TreeView создается во время выполнения и добавляется в Panel. Затем этот код запускается для построения дерева.
var
node0, node1, node2, node3, node4, node5: TtreeNode;
begin
Tree.Items.Clear;
node0 := Tree.Items.Add(nil, 'Client Folders');
node1 := Tree.Items.AddChild(node0, 'C:\files');
node3 := Tree.Items.AddChild(node1, 'Folder 1');
node2 := Tree.Items.AddChild(node0, '\\Westdc2\dev');
node4 := Tree.Items.AddChild(node2, 'Folder 2');
node5 := Tree.Items.AddChildFirst(node4, 'Folder 3');
Это работает правильно;Я получаю клиентские папки с двумя папками под ним: C: \ files и \ westdc2 \ dev и папки 1-3 под ними.
![With TtreeView](https://i.stack.imgur.com/l0J1V.png)
Но если я изменю определение Tree на TShellTreeView (и в .Create), оно не будет работать. Я просто добавил клиентские папки и ничего больше.
![enter image description here](https://i.stack.imgur.com/26sQA.png)
То же самое с Tree.Items.Clear или без нее, которая удаляет системные папки при использовании TShellTreeview.