Files
MBS/PROYECTO/ipdir/dynamic-tree.4gl
T
jpegueroandClaude Sonnet 5 b6085d4140 Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
Instruccion de Johnny: todos los directorios de fuentes de inventario
deben migrarse de la carpeta temporal PROYECTOS a la carpeta real
PROYECTO, ya que PROYECTOS sera eliminada.

Se elimino tambien un archivo suelto sin relacion llamado "ipdir"
que existia en PROYECTO (del commit inicial) y bloqueaba el nombre
de la carpeta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:29:01 -04:00

81 lines
2.0 KiB
Plaintext

# Property of Four Js*
# (c) Copyright Four Js 1995, 2013. All Rights Reserved.
# * Trademark of Four Js Development Tools Europe Ltd
# in the United States and elsewhere
#
# Four Js and its suppliers do not warrant or guarantee that these
# samples are accurate and suitable for your purposes. Their inclusion is
# purely for information purposes only.
DEFINE tree DYNAMIC ARRAY OF RECORD
NAME STRING,
parentId STRING,
id STRING,
hasChildren BOOLEAN
END RECORD
MAIN
DEFINE id INTEGER
OPEN FORM f FROM arg_val(0)
DISPLAY FORM f
CALL expand(0)
DISPLAY ARRAY tree TO tree.* ATTRIBUTE(UNBUFFERED)
BEFORE DISPLAY CALL DIALOG.setSelectionMode("tree", 1)
ON EXPAND(id)
DISPLAY "expand id:", id, " arr_curr:", arr_curr()
CALL expand(id)
ON COLLAPSE(id)
DISPLAY "collapse id:", id, " arr_curr:", arr_curr()
CALL collapse(id)
END DISPLAY
END MAIN
FUNCTION collapseAll()
DEFINE p INT
LET p = 1
WHILE p < tree.getLength()
CALL collapse(p)
LET p = p + 1
END WHILE
END FUNCTION
FUNCTION collapse(p)
DEFINE p INT
DEFINE id STRING
LET id = tree[p].id
WHILE p < tree.getLength()
IF tree[p + 1].parentId <> id THEN EXIT WHILE END IF
CALL collapse(p + 1)
CALL tree.deleteElement(p + 1)
END WHILE
END FUNCTION
FUNCTION expand(p)
DEFINE NAME, id, parentId STRING
DEFINE p INT
DEFINE i INT
IF p == 0 THEN
LET parentId = 0
LET NAME = "Root"
ELSE
LET parentId = tree[p].id
LET NAME = "Node"
END IF
FOR i = 1 TO 4
LET p = p + 1
CALL tree.insertElement(p)
LET id = parentId || "." || i
LET tree[p].id = id
LET tree[p].parentId = parentId
LET tree[p].name = NAME || " " || i
IF i MOD 2 THEN
LET tree[p].hasChildren = TRUE
ELSE
LET tree[p].hasChildren = FALSE
END IF
END FOR
END FUNCTION