![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Podrías buscar en torry alguna componente TreeView "db aware" que quizá sería lo óptimo. Manualmente quizá podrías optar por cargar los nodos de un nivel y cargar los hijos sólo cuando el usuario expanda un nodo. Para ello, al insertar un nodo debes poner su propiedad HasChildren en true y controlar el evento OnExpand (te lo estoy diciendo un poco de memoria pero es algo así). En este evento leerías los subnodos (nuevamente sólo un nivel) sin leer subnodos de tercer nivel y así sucesivamente.
// Saludos |
|
#2
|
|||
|
|||
|
conoces algun componente en particular que me puedas recomendar
|
|
#3
|
||||
|
||||
|
Cita:
// Saludos |
|
#4
|
|||
|
|||
|
Como lo hago yo
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. |
|
#5
|
|||
|
|||
|
mini-apunte
Se me olvidaba deciros que para posteriormente desde el TTreeView a la base de datos se debe hacer con el AbsoluteIndex, lo que implica que en la tabla se ha de tener un indice absoluto de todas las filas
![]() |
|
#6
|
|||
|
|||
|
gracias por vuestras respuestas
gracias por vuestras respuestas. Yo finalmente me lo he solucionado con un TTreeView:
No cargo el arbol de golpe, sino que cargo la parte que me interesa justo cuando hago clic sobre un signo + del arbol, en el evento onexpanding. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|