El otro dia empecé un proyectillo que leia la informacion de una unidad, guardando los datos en una DB (carpetas, ficheros, tamaños, fechas, atributos, etc...).
Pues el TTreeView me daba problemas y encontré una solución bastante rápida:
El tema está en que cuando guardo los datos de las carpetas en la base de datos tengo un campo donde le indico la profundidad de dicha carpeta, y además los guardo por profundidad (C:\, C:\A, C:\A\B, C:\A\B\C, C:\D, ...). Para cargarlos después en un TTreeView hago:
1. Cargo un nombre de carpetas de la DB.
2. Le añado el carácter #9 (tab) tantas veces como profundidad tenga
3. Inserto el nombre modificado en un TListBox
4. Repito desde el 1 hasta que tenga ganas
5. Guardo el TListBox en un fichero temporal (C:\TEMP123.TMP)
6. Cargo el fichero con el TTreeView
7. Elimino el archivo temporal
Va muy bien en serio. Eso si: la base de datos ha de estar ordenada por profundidad para que todo sea correcto.