81 lines
2.0 KiB
Plaintext
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
|