Project

General

Profile

treelist.p

Sergey Ivanovskiy, 05/14/2020 02:48 PM

Download (3.47 KB)

 
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.