Rev 1634 | Rev 5911 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1374 | IgorA | 1 | |
2 | |||
3 |
|
||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 |
|
||
10 | |||
11 | |||
12 | |||
13 | |||
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | |||
21 | |||
22 | |||
23 | |||
24 | |||
25 | |||
26 | |||
27 | |||
28 | |||
29 | |||
30 | |||
31 | |||
32 | |||
1634 | IgorA | 33 | |
34 | |||
35 | |||
1374 | IgorA | 36 | |
37 | |||
38 | |||
39 | |||
40 | |||
41 | |||
42 | |||
43 | |||
44 |
|
||
45 |
|
||
46 | |||
47 |
|
||
48 | |||
49 |
|
||
50 | |||
51 |
|
||
52 |
|
||
53 |
|
||
54 |
|
||
55 | |||
56 |
|
||
57 |
|
||
58 | |||
59 |
|
||
60 |
|
||
61 | Кнопки, которые не доступны если есть стиль tl_key_no_edit: [Enter], [Delete], [←], [→]. |
||
62 | Всегда доступны: [↑], [↓], [Page Up], [Page Dn], [Space]. |
||
63 | Функция проверяет включен ли режим scan кодов, и в случае необходимости сама преобразует коды. |
||
64 | |||
65 |
|
||
66 |
|
||
67 | |||
68 |
|
||
69 |
|
||
70 | |||
71 |
|
||
72 |
|
||
73 | |||
74 |
|
||
75 |
|
||
76 | |||
77 |
|
||
78 |
|
||
1634 | IgorA | 79 | push dword tree1 |
80 | push dword 0x10002 |
||
81 | push dword data_buffer |
||
82 | call dword[tl_node_add] |
||
1374 | IgorA | 83 |
|
84 | 0x10002 - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел. |
||
85 | |||
86 |
|
||
87 |
|
||
88 | |||
89 |
|
||
90 |
|
||
1609 | IgorA | 91 |
|
92 | stdcall [tl_node_get_data], tree1 |
||
93 | pop eax |
||
94 |
|
||
95 | eax - указатель на дынные узла. |
||
1374 | IgorA | 96 | |
1609 | IgorA | 97 |
|
98 | NODE_SIZE equ 200 |
||
99 | node_data rb NODE_SIZE |
||
100 | ......... |
||
101 | push ecx esi edi |
||
102 | stdcall [tl_node_get_data], tree1 |
||
103 | pop esi |
||
104 | mov edi,node_data |
||
105 | mov ecx,NODE_SIZE |
||
106 | cld |
||
107 | rep movsb |
||
108 | pop edi esi ecx |
||
109 |
|
||
110 | NODE_SIZE - размер дынных узла; |
||
111 | node_data - копия на дынных узла. |
||
112 | |||
1374 | IgorA | 113 |
|
114 |
|
||
115 | |||
116 |
|
||
117 |
|
||
118 | |||
119 |
|
||
120 |
|
||
121 | |||
122 |
|
||
123 |
|
||
124 | |||
125 |
|
||
126 |
|
||
127 | то ничего не делает. Автоматически перерисовывает окно если состояние узла изменилось. |
||
128 | |||
129 |
|
||
130 |
|
||
131 | |||
132 |
|
||
133 |
|
||
134 | |||
135 |
|
||
136 |
|
||
1634 | IgorA | 137 | push dword tree1 |
138 | call dword[tl_node_move_up] ;переместить узел |
||
1374 | IgorA | 139 |
|
140 | |||
141 |
|
||
142 |
|
||
1634 | IgorA | 143 | push dword tree1 |
144 | call dword[tl_node_move_down] ;переместить узел |
||
1374 | IgorA | 145 |
|
146 | |||
1634 | IgorA | 147 |
|
148 |
|
||
149 | push dword tree1 |
||
150 | push dword 0 |
||
151 | call dword[tl_node_poi_get_info] |
||
152 | pop esi |
||
153 |
|
||
154 | 0 - позиция узла, с которого берется указатель; |
||
155 | esi - указатель на структуру описывающую узел. |
||
1705 | IgorA | 156 |
|
1374 | IgorA | 157 | |
1634 | IgorA | 158 |
|
159 |
|
||
160 | push tree1 |
||
161 | push esi |
||
162 | call dword[tl_node_poi_get_next_info] |
||
163 | pop esi ;переходим к следущему узлу |
||
164 |
|
||
165 | esi - до вызова функции указатель на структуру описывающую узел, после вызова указатель на структуру описывающую следущий узел в цепи. |
||
1705 | IgorA | 166 |
|
1374 | IgorA | 167 | |
1634 | IgorA | 168 |
|
169 |
|
||
170 | push dword tree1 |
||
171 | push dword esi |
||
172 | call dword[tl_node_poi_get_data] |
||
173 | pop eax ;получаем данные узла |
||
174 |
|
||
175 | esi - указатель на структуру описывающую узел; |
||
176 | eax - указатель на данные узла, описааного в esi. |
||
177 |
|
||
178 | |||
1374 | IgorA | 179 |
|
180 |
|
||
1634 | IgorA | 181 | MEM_SIZE equ 5000 |
182 | node_data rb MEM_SIZE |
||
1374 | IgorA | 183 | ......... |
1634 | IgorA | 184 | push dword tree1 |
185 | push dword 0 |
||
186 | push dword node_data |
||
187 | push dword MEM_SIZE |
||
188 | call dword[tl_save_mem] |
||
189 | pop eax |
||
1374 | IgorA | 190 |
|
191 | 0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); |
||
192 | node_data - указатель на блок памяти; |
||
193 | MEM_SIZE - размер блока памяти для сохранения. |
||
194 | В регистр eax пишется значение 0 или записываются коды ошибок сохранения. |
||
195 | |||
196 |
|
||
197 |
|
||
1634 | IgorA | 198 | MEM_SIZE equ 5000 |
199 | node_data rb MEM_SIZE |
||
1374 | IgorA | 200 | ......... |
1634 | IgorA | 201 | push dword tree1 |
202 | push dword 0 |
||
203 | push dword node_data |
||
204 | push dword MEM_SIZE |
||
205 | call dword[tl_load_mem] |
||
206 | pop eax |
||
1374 | IgorA | 207 |
|
208 | 0 - индекс считываемого элемента; |
||
209 | node_data - указатель на блок памяти; |
||
210 | MEM_SIZE - размер блока памяти для сохранения. |
||
211 | В регистр eax пишется значение 0 или записываются коды ошибок считывания. |
||
212 | |||
213 |
|
||
214 |
|
||
1705 | IgorA | 215 | Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных. Пример: |
216 | MEM_SIZE equ 5000 |
||
217 | node_data rb MEM_SIZE |
||
218 | ......... |
||
219 | ;сохраняем данные в 'node_data' |
||
220 | stdcall dword[tl_save_mem], MEM_SIZE, node_data, 0, tree1 |
||
221 | pop eax ;код ошибки |
||
222 | ......... |
||
223 | ;получаем размер данных в 'node_data' |
||
224 | stdcall dword[tl_get_mem_size], node_data, tree1 |
||
225 | pop ecx ;размер данных, должен быть <= MEM_SIZE |
||
1374 | IgorA | 226 | |
227 |
|
||
228 |
|
||
229 | |||
230 |
|
||
231 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
||
1634 | IgorA | 232 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
233 | info_capt_len,el_focus, p_scrol,on_press |
||
234 | { |
||
1374 | IgorA | 235 | .data_info dd 0 |
236 | .info_size dw info_size |
||
237 | .info_max_count dd info_max_count |
||
238 | .style dd style |
||
239 | .data_nodes dd 0 |
||
240 | .data_img dd 0 |
||
241 | .img_cx dw img_cx |
||
242 | .img_cy dw img_cy |
||
243 | .data_img_sys dd 0 |
||
244 | .ch_tim dd 0 |
||
245 | .ls_tim dd 0 |
||
246 | .tim_undo dd 0 |
||
247 | .cur_pos dd 0 |
||
248 | .col_bkg dd col_bkg |
||
249 | .col_zag dd col_zag |
||
250 | .col_txt dd col_txt |
||
251 | .box_left dd box_l |
||
252 | .box_top dd box_t |
||
253 | .box_width dd box_w |
||
254 | .box_height dd box_h |
||
255 | .capt_cy dw capt_cy |
||
256 | .info_capt_offs dw info_capt_offs |
||
257 | .info_capt_len dw info_capt_len |
||
258 | .el_focus dd el_focus |
||
259 | .p_scrol dd p_scrol |
||
260 | rb 4 |
||
261 | .on_activate dd 0 |
||
262 | .on_press dd on_press |
||
263 | } |
||
264 |
|
||
265 |
|
||
266 |
|
||
267 |
|
||
1634 | IgorA | 268 |
|
269 |
|
||
270 |
|
||
271 |
|
||
272 |
|
||
273 |
|
||
274 |
|
||
1374 | IgorA | 275 |
|
276 |
|
||
277 |
|
||
1634 | IgorA | 278 |
|
1374 | IgorA | 279 | |
280 | |||
281 |
|
||
282 | |||
283 |
|
||
284 | tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\ |
||
1634 | IgorA | 285 | 0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\ |
286 | el_focus, wScr,fun_on_enter |
||
1374 | IgorA | 287 | |
288 |
|
||
289 |
|
||
290 |
|
||
291 |
|
||
292 |
|
||
293 |
|
||
294 |
|
||
295 | |||
296 | |||
1634 | IgorA | 297 |
|
1374 | IgorA | 298 | |
299 |