Rev 5911 | 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 |
|
||
5911 | IgorA | 79 | stdcall dword[tl_node_add], tree1,0x10002,data_buffer |
1374 | IgorA | 80 |
|
81 | 0x10002 - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел. |
||
82 | |||
83 |
|
||
84 |
|
||
85 | |||
86 |
|
||
87 |
|
||
1609 | IgorA | 88 |
|
5911 | IgorA | 89 | stdcall [tl_node_get_data], tree1 |
1609 | IgorA | 90 |
|
91 | eax - указатель на дынные узла. |
||
1374 | IgorA | 92 | |
1609 | IgorA | 93 |
|
94 | NODE_SIZE equ 200 |
||
95 | node_data rb NODE_SIZE |
||
96 | ......... |
||
5911 | IgorA | 97 | push eax ecx esi edi |
1609 | IgorA | 98 | stdcall [tl_node_get_data], tree1 |
5911 | IgorA | 99 | mov esi,eax |
1609 | IgorA | 100 | mov edi,node_data |
101 | mov ecx,NODE_SIZE |
||
102 | cld |
||
103 | rep movsb |
||
5911 | IgorA | 104 | pop edi esi ecx eax |
1609 | IgorA | 105 |
|
106 | NODE_SIZE - размер дынных узла; |
||
107 | node_data - копия на дынных узла. |
||
108 | |||
1374 | IgorA | 109 |
|
110 |
|
||
111 | |||
112 |
|
||
113 |
|
||
114 | |||
115 |
|
||
116 |
|
||
117 | |||
118 |
|
||
119 |
|
||
120 | |||
121 |
|
||
122 |
|
||
123 | то ничего не делает. Автоматически перерисовывает окно если состояние узла изменилось. |
||
124 | |||
125 |
|
||
126 |
|
||
127 | |||
128 |
|
||
129 |
|
||
130 | |||
131 |
|
||
132 |
|
||
1634 | IgorA | 133 | push dword tree1 |
134 | call dword[tl_node_move_up] ;переместить узел |
||
1374 | IgorA | 135 |
|
136 | |||
137 |
|
||
138 |
|
||
1634 | IgorA | 139 | push dword tree1 |
140 | call dword[tl_node_move_down] ;переместить узел |
||
1374 | IgorA | 141 |
|
142 | |||
1634 | IgorA | 143 |
|
9610 | IgorA | 144 |
|
145 |
|
||
5911 | IgorA | 146 | stdcall dword[tl_node_poi_get_info], tree1, 0 |
1634 | IgorA | 147 |
|
148 | 0 - позиция узла, с которого берется указатель; |
||
5911 | IgorA | 149 | eax - указатель на структуру описывающую узел. |
1705 | IgorA | 150 |
|
9610 | IgorA | 151 |
|
152 | stdcall dword[tl_node_poi_get_info], tree1, tree1.cur_pos |
||
153 |
|
||
154 | tree1.cur_pos - позиция курсора в списке; |
||
155 | eax - указатель на структуру описывающую узел где стоит курсор. |
||
156 |
|
||
1374 | IgorA | 157 | |
1634 | IgorA | 158 |
|
159 |
|
||
5911 | IgorA | 160 | stdcall dword[tl_node_poi_get_next_info], tree1, eax |
1634 | IgorA | 161 |
|
5911 | IgorA | 162 | eax - до вызова функции указатель на структуру описывающую узел, после вызова указатель на структуру описывающую следущий узел в цепи. |
1705 | IgorA | 163 |
|
1374 | IgorA | 164 | |
1634 | IgorA | 165 |
|
166 |
|
||
5911 | IgorA | 167 | stdcall dword[tl_node_poi_get_data], tree1,esi |
1634 | IgorA | 168 |
|
169 | esi - указатель на структуру описывающую узел; |
||
5911 | IgorA | 170 | eax - указатель на данные узла, описанного в esi. |
1634 | IgorA | 171 |
|
172 | |||
1374 | IgorA | 173 |
|
174 |
|
||
1634 | IgorA | 175 | MEM_SIZE equ 5000 |
176 | node_data rb MEM_SIZE |
||
1374 | IgorA | 177 | ......... |
5911 | IgorA | 178 | stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE |
1374 | IgorA | 179 |
|
180 | 0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); |
||
181 | node_data - указатель на блок памяти; |
||
182 | MEM_SIZE - размер блока памяти для сохранения. |
||
183 | В регистр eax пишется значение 0 или записываются коды ошибок сохранения. |
||
184 | |||
185 |
|
||
186 |
|
||
1634 | IgorA | 187 | MEM_SIZE equ 5000 |
188 | node_data rb MEM_SIZE |
||
1374 | IgorA | 189 | ......... |
5911 | IgorA | 190 | stdcall dword[tl_load_mem], tree1, 0, node_data, MEM_SIZE |
1374 | IgorA | 191 |
|
192 | 0 - индекс считываемого элемента; |
||
193 | node_data - указатель на блок памяти; |
||
194 | MEM_SIZE - размер блока памяти для сохранения. |
||
195 | В регистр eax пишется значение 0 или записываются коды ошибок считывания. |
||
196 | |||
197 |
|
||
198 |
|
||
1705 | IgorA | 199 | Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных. Пример: |
200 | MEM_SIZE equ 5000 |
||
201 | node_data rb MEM_SIZE |
||
202 | ......... |
||
203 | ;сохраняем данные в 'node_data' |
||
5911 | IgorA | 204 | stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE |
1705 | IgorA | 205 | pop eax ;код ошибки |
206 | ......... |
||
207 | ;получаем размер данных в 'node_data' |
||
5911 | IgorA | 208 | stdcall dword[tl_get_mem_size], tree1, node_data |
1705 | IgorA | 209 | pop ecx ;размер данных, должен быть <= MEM_SIZE |
1374 | IgorA | 210 | |
211 |
|
||
212 |
|
||
213 | |||
214 |
|
||
215 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
||
1634 | IgorA | 216 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
5911 | IgorA | 217 | info_capt_len,el_focus, p_scroll,on_press |
1634 | IgorA | 218 | { |
5911 | IgorA | 219 | .box_left dd box_l |
220 | .box_top dd box_t |
||
221 | .box_width dd box_w |
||
222 | .box_height dd box_h |
||
223 | .data_info dd 0 |
||
224 | .info_size dw info_size |
||
225 | .info_max_count dd info_max_count |
||
226 | .style dd style |
||
227 | .data_nodes dd 0 |
||
228 | .data_img dd 0 |
||
229 | .img_cx dw img_cx |
||
230 | .img_cy dw img_cy |
||
231 | .data_img_sys dd 0 |
||
232 | .ch_tim dd 0 |
||
233 | .tim_undo dd 0 |
||
234 | .cur_pos dd 0 |
||
235 | .col_bkg dd col_bkg |
||
236 | .col_zag dd col_zag |
||
237 | .col_txt dd col_txt |
||
238 | .capt_cy dw capt_cy |
||
239 | .info_capt_offs dw info_capt_offs |
||
240 | .info_capt_len dw info_capt_len |
||
241 | .el_focus dd el_focus |
||
242 | .p_scroll dd p_scroll |
||
243 | .on_press dd on_press |
||
1374 | IgorA | 244 | } |
245 |
|
||
246 |
|
||
247 |
|
||
248 |
|
||
1634 | IgorA | 249 |
|
250 |
|
||
251 |
|
||
252 |
|
||
253 |
|
||
254 |
|
||
255 |
|
||
1374 | IgorA | 256 |
|
257 |
|
||
5911 | IgorA | 258 |
|
1634 | IgorA | 259 |
|
1374 | IgorA | 260 | |
261 | |||
262 |
|
||
263 | |||
264 |
|
||
265 | tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\ |
||
1634 | IgorA | 266 | 0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\ |
267 | el_focus, wScr,fun_on_enter |
||
1374 | IgorA | 268 | |
269 |
|
||
270 |
|
||
271 |
|
||
272 |
|
||
273 |
|
||
274 |
|
||
275 |
|
||
276 | |||
277 | |||
5911 | IgorA | 278 |
|
1374 | IgorA | 279 | |
280 |