Cargar Treeview desde un archivo jerarquizado
Posted: Wed Feb 06, 2013 6:20 pm
Saludos amigos foristas, les pido ayuda para ver como enfrentar este procedimiento, tengo un archivo con una estructura jerarquica donde tengo identificado en orden consecutivo la estructura y su profundidad (depth).
teniendo estos datos ya organizados, elaboré una función que construye el tree, sin embargo la lógica que utilice no es la más idonea.
Esta es la función.
Quien puede ayudar con una función que considere por lo menos diez subniveles en la estructura.
- Code: Select all Expand view
- NAME DEPTH
======================================================================================== =====
VISUALIZAR 0
ESTABLECER LOS OBJETIVOS Y PROPÓSITOS DEL PROYECTO 1
1. Establecer los objetivos y propósitos del proyecto 2
A. Conformar el equipo de trabajo de la fase visualizar 3
B. Planificar fase visualizar 3
C. Preparar y convocar reunión mesa de trabajo No.1 3
D. Establecer productos y volúmenes de producción 3
E. Establecer calidad de los productos 3
F. Establecer alimentación requerida (volumen y calidad) 3
G. Premisas consideradas para establecer objetivos y Propósitos del proyecto 3
H. Establecer requerimientos de prueba/ investigación adicional para verificar 3
I. Establecer dependencias y relación con otros proyectos del plan 3
VERIFICAR ALINEACIÓN DEL PROYECTO CON ESTRATEGIA CORPORATIVA 1
1. Verificar alineación del proyecto con estrategia corporativa 2
A. Conocer lineamientos y requerimientos del portafolio de oportunidades y/o 3
B. Identificar oportunidades de optimización de infraestructuras 3
C. Documentar la identificación de alineación del proyecto con los objetivos 3
DESARROLLO PRELIMINAR DEL PROYECTO 1
1. Elaborar alcance preliminar del proyecto: 2
A. Recopilar informaciOn requerida 3
B. Identificar requerimientos de infraestructura y servicios 3
C. Establecer factibilidad técnica del proyecto 3
D. Documentar alcance preliminar del proyecto 3
2. Elaborar de costo Clase V 2
A. Recopilar información requerida 3
B. Seleccionar metodologìa de estimación 3
C. Elaboración de estimado de Clase V del proyecto, que incluya estimado Clase 3
3. Elaborar PEP Clase 2
A. Describir premisas a c0nsiderar para la programación del proyecto 3
B. Identificar potenciales riesgos de incumplimiento 3
C. Establecer estrategias de ejecución 3
D. Establecer cronograma para el desarrollo de los hitos principales de ejecuc 3
E. Elaborar PEP Clase V del proyecto 3
F. Recursos requeridos para ejecutar la fase conceptualizar 3
G. Elaborar Plan de ejecución Clase II de la fase conceptualizar 3
4. Describir factibilidad del proyecto (técnica y económica) 2
A. Describir parámetros de prefactibilidad económica del Paquete que contiene 3
B. Lista de riesgos mayores/ identificación preliminar de peligros SHA 3
C. Preparar y convocar reunión mesa de trabajo No.2 3
D. Someter DSD1 y solicitar fondos para la fase conceptualizar 3
teniendo estos datos ya organizados, elaboré una función que construye el tree, sin embargo la lógica que utilice no es la más idonea.
Esta es la función.
- Code: Select all Expand view
- Function BuildTree( oTree, aItems, cTreeName )
LOCAL oItem0, oItem1, oItem2, oItem3, oItem4, oItem5, oItem6, oItem7, oItem8, oItem9
LOCAL n
LOCAL nPrevLevel := aItems[1][2]
Local nImg := 0
LOCAL nItems := LEN( aItems )
FOR n := 1 TO nItems
DO CASE
CASE aItems[n][2] == 0
IF aItems[n][2] < nPrevLevel
oItem0 := NIL
ENDIF
IF oItem0 == NIL
oItem0 := oTree:Add( aItems[n][1] )
ELSE
oItem0:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 1
IF aItems[n][2] < nPrevLevel
oItem1 := NIL
ENDIF
IF oItem1 == NIL
oItem1 := oItem0:Add( aItems[n][1] )
ELSE
oItem1:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 2
IF aItems[n][2] < nPrevLevel
oItem2 := NIL
ENDIF
IF oItem2 == NIL
oItem2 := oItem1:Add( aItems[n][1] )
ELSE
oItem2:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 3
IF aItems[n][2] < nPrevLevel
oItem3 := NIL
ENDIF
IF oItem3 == NIL
oItem3 := oItem2:Add( aItems[n][1] )
ELSE
oItem3:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 4
IF aItems[n][2] < nPrevLevel
oItem4 := NIL
ENDIF
IF oItem4 == NIL
oItem4 := oItem3:Add( aItems[n][1] )
ELSE
oItem4:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 5
IF aItems[n][2] < nPrevLevel
oItem5 := NIL
ENDIF
IF oItem5 == NIL
oItem5 := oItem4:Add( aItems[n][1] )
ELSE
oItem5:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 6
IF aItems[n][2] < nPrevLevel
oItem6 := NIL
ENDIF
IF oItem6 == NIL
oItem6 := oItem5:Add( aItems[n][1] )
ELSE
oItem6:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 7
MsgInfo( STR(n)+CRLF+aItems[n][1] )
IF aItems[n][2] < nPrevLevel
oItem7 := NIL
ENDIF
IF oItem7 == NIL
oItem7 := oItem6:Add( aItems[n][1] )
ELSE
oItem7:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 8
IF aItems[n][2] < nPrevLevel
oItem8 := NIL
ENDIF
IF oItem8 == NIL
oItem8 := oItem7:Add( aItems[n][1] )
ELSE
oItem7:Add( aItems[n][1] )
ENDIF
CASE aItems[n][2] == 9
IF aItems[n][2] < nPrevLevel
oItem9 := NIL
ENDIF
IF oItem9 == NIL
oItem9 := oItem8:Add( aItems[n][1] )
ELSE
oItem9:Add( aItems[n][1] )
ENDIF
ENDCASE
nPrevLevel := aItems[n][2]
NEXT n
Quien puede ayudar con una función que considere por lo menos diez subniveles en la estructura.