1
|
define var hTree as handle.
|
2
|
define var hNode as handle.
|
3
|
define var hNode1 as handle.
|
4
|
define var hNode2 as handle.
|
5
|
define var hTemp as handle.
|
6
|
define var chKey as character.
|
7
|
define var i as integer.
|
8
|
define var j as integer.
|
9
|
define var k as integer.
|
10
|
define var img1 as integer.
|
11
|
define var img2 as integer.
|
12
|
define var img3 as integer.
|
13
|
define var img4 as integer.
|
14
|
|
15
|
define button bAdd label "Create Node".
|
16
|
define button bRemove label "Remove Node".
|
17
|
|
18
|
define frame f
|
19
|
bAdd at column 1 row 22
|
20
|
bRemove at column 20 row 22
|
21
|
with size 80 by 25 title "TreeList Demo".
|
22
|
|
23
|
create treelist hTree assign
|
24
|
frame = frame f:handle
|
25
|
width = 60
|
26
|
height = 20
|
27
|
expand-on-enter = true
|
28
|
.
|
29
|
|
30
|
hTree:show-header = true.
|
31
|
hTree:create-column("Column 1", 0, 100, 3, rgb-value(255, 255, 255), rgb-value(0, 0, 0)).
|
32
|
hTree:create-column("Column 2", 0, 100, 3, rgb-value(255, 255, 255), rgb-value(0, 0, 0)).
|
33
|
|
34
|
default-window:width = 101.
|
35
|
default-window:height = 30.
|
36
|
|
37
|
enable all with frame f.
|
38
|
|
39
|
img1 = hTree:create-image("treeview-sample-icon1.png").
|
40
|
img2 = hTree:create-image("treeview-sample-icon2.png").
|
41
|
img3 = hTree:create-image("treeview-sample-icon3.png").
|
42
|
img4 = hTree:create-image("treeview-sample-icon4.png").
|
43
|
|
44
|
do i = 1 to 5:
|
45
|
chKey = "Node " + string(i).
|
46
|
hNode = hTree:nodes:add-last-node(chKey, chKey).
|
47
|
hNode:node-icon = img1.
|
48
|
hNode:expand-node-icon = img1.
|
49
|
do j = 1 to 5:
|
50
|
chKey = "Node " + string(i) + "." + string(j).
|
51
|
hNode1 = hNode:nodes:add-last-node(chKey, chKey).
|
52
|
hNode1:node-icon = img2.
|
53
|
hNode1:expand-node-icon = img2.
|
54
|
|
55
|
do k = 1 to 5:
|
56
|
chKey = "Node " + string(i) + "." + string(j) + "." + string(k).
|
57
|
hNode2 = hNode1:nodes:add-last-node(chKey, chKey).
|
58
|
hNode2:node-icon = img4.
|
59
|
hNode2:expand-node-icon = img4.
|
60
|
end.
|
61
|
end.
|
62
|
end.
|
63
|
|
64
|
on value-changed of hTree do:
|
65
|
message "Previously selected node:" hTree:trigger-node:node-key "selected node:" hTree:selected-node:node-key.
|
66
|
end.
|
67
|
|
68
|
on default-action of hTree do:
|
69
|
message "Default action on node:" hTree:trigger-node:node-key.
|
70
|
end.
|
71
|
|
72
|
on node-expanding of hTree do:
|
73
|
message "Expanding node:" hTree:trigger-node:node-key.
|
74
|
end.
|
75
|
|
76
|
on node-expanded of hTree do:
|
77
|
message "Expanded node:" hTree:trigger-node:node-key.
|
78
|
end.
|
79
|
|
80
|
on node-collapsing of hTree do:
|
81
|
message "Collapsing node:" hTree:trigger-node:node-key.
|
82
|
end.
|
83
|
|
84
|
on node-collapsed of hTree do:
|
85
|
message "Collapsed node:" hTree:trigger-node:node-key.
|
86
|
end.
|
87
|
|
88
|
on left-mouse-click of hTree do :
|
89
|
|
90
|
DEF VAR xPos AS DECIMAL.
|
91
|
DEF VAR yPos AS DECIMAL.
|
92
|
DEF VAR pnt AS INTEGER EXTENT 2.
|
93
|
DEF VAR nodeKey AS CHARACTER.
|
94
|
|
95
|
pnt = hTree:GET-MOUSE-POSITION().
|
96
|
|
97
|
MESSAGE "hTree:GET-MOUSE-POSITION() = (" pnt[1] ", " pnt[2] ")".
|
98
|
|
99
|
Assign
|
100
|
xPos = pnt[1]
|
101
|
yPos = pnt[2].
|
102
|
|
103
|
nodeKey = hTree:Get-Node-At(xPos, yPos).
|
104
|
|
105
|
MESSAGE "NodeKey = " nodeKey.
|
106
|
|
107
|
end.
|
108
|
|
109
|
on choose of bAdd do:
|
110
|
def var chKey as char.
|
111
|
def var iNodeId as int.
|
112
|
def var newNodeId as int.
|
113
|
|
114
|
message "Enter node label" set chKey.
|
115
|
if chKey = ? then return.
|
116
|
if length(trim(chKey)) = 0 then return.
|
117
|
|
118
|
hNode = hTree:selected-node.
|
119
|
|
120
|
if hNode <> ? then iNodeId = hNode:node-id.
|
121
|
hTree:create-sub-node(iNodeId, chKey, chKey, true, img3, img3, "Tooltip sample", newNodeId).
|
122
|
//hTree:create-sub-node(iNodeId, chKey, chKey, true, img3, img3, newNodeId).
|
123
|
end.
|
124
|
|
125
|
on choose of bRemove do:
|
126
|
hNode = hTree:selected-node.
|
127
|
if hNode <> ? then
|
128
|
hTree:remove-node(hNode:node-id).
|
129
|
end.
|
130
|
|
131
|
on x anywhere do:
|
132
|
hTree:expand-node(1).
|
133
|
end.
|
134
|
|
135
|
on y anywhere do:
|
136
|
hTree:collapse-node(1).
|
137
|
end.
|
138
|
|
139
|
wait-for close of this-procedure.
|