Cosas como estas:
Código Delphi
[-]
if ParentNode <> nil then
begin
for i := 0 to ParentNode.Count-1 do
if (ParentNode.Item[i].Text = AFolder.Name) then
begin
ParentNode.Item.Delete;
En otro sitio te dirían que vale, que no pasa nada. Desde luego, creo que en estos foros buscamos la eficiencia y el buen hacer de las cosas. Es innecesario crear los items, y acto seguirlo eliminarlo porque salen repetidos.
Deberás hacer algo al respecto.
En mi opinion, puedes añadir a la rutina recursiva, un parámetro FullDeep:Boolean, si lo pones a true, busca todos los niveles de carpeta, si lo pones a false, solo busca el nombre de las carpetas de primer nivel.
Esto último te sirve para representar los nodos iniciales en el TreeView (FullDeep:=false), despues en el OnExpand, solo haz de llamar a la misma rutina con FullDeep:= True.
saludos