Rev 1705 | 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 |
|
||
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 |
|
144 |
|
||
5911 | IgorA | 145 | stdcall dword[tl_node_poi_get_info], tree1, 0 |
1634 | IgorA | 146 |
|
147 | 0 - позиция узла, с которого берется указатель; |
||
5911 | IgorA | 148 | eax - указатель на структуру описывающую узел. |
1705 | IgorA | 149 |
|
1374 | IgorA | 150 | |
1634 | IgorA | 151 |
|
152 |
|
||
5911 | IgorA | 153 | stdcall dword[tl_node_poi_get_next_info], tree1, eax |
1634 | IgorA | 154 |
|
5911 | IgorA | 155 | eax - до вызова функции указатель на структуру описывающую узел, после вызова указатель на структуру описывающую следущий узел в цепи. |
1705 | IgorA | 156 |
|
1374 | IgorA | 157 | |
1634 | IgorA | 158 |
|
159 |
|
||
5911 | IgorA | 160 | stdcall dword[tl_node_poi_get_data], tree1,esi |
1634 | IgorA | 161 |
|
162 | esi - указатель на структуру описывающую узел; |
||
5911 | IgorA | 163 | eax - указатель на данные узла, описанного в esi. |
1634 | IgorA | 164 |
|
165 | |||
1374 | IgorA | 166 |
|
167 |
|
||
1634 | IgorA | 168 | MEM_SIZE equ 5000 |
169 | node_data rb MEM_SIZE |
||
1374 | IgorA | 170 | ......... |
5911 | IgorA | 171 | stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE |
1374 | IgorA | 172 |
|
173 | 0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); |
||
174 | node_data - указатель на блок памяти; |
||
175 | MEM_SIZE - размер блока памяти для сохранения. |
||
176 | В регистр eax пишется значение 0 или записываются коды ошибок сохранения. |
||
177 | |||
178 |
|
||
179 |
|
||
1634 | IgorA | 180 | MEM_SIZE equ 5000 |
181 | node_data rb MEM_SIZE |
||
1374 | IgorA | 182 | ......... |
5911 | IgorA | 183 | stdcall dword[tl_load_mem], tree1, 0, node_data, MEM_SIZE |
1374 | IgorA | 184 |
|
185 | 0 - индекс считываемого элемента; |
||
186 | node_data - указатель на блок памяти; |
||
187 | MEM_SIZE - размер блока памяти для сохранения. |
||
188 | В регистр eax пишется значение 0 или записываются коды ошибок считывания. |
||
189 | |||
190 |
|
||
191 |
|
||
1705 | IgorA | 192 | Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных. Пример: |
193 | MEM_SIZE equ 5000 |
||
194 | node_data rb MEM_SIZE |
||
195 | ......... |
||
196 | ;сохраняем данные в 'node_data' |
||
5911 | IgorA | 197 | stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE |
1705 | IgorA | 198 | pop eax ;код ошибки |
199 | ......... |
||
200 | ;получаем размер данных в 'node_data' |
||
5911 | IgorA | 201 | stdcall dword[tl_get_mem_size], tree1, node_data |
1705 | IgorA | 202 | pop ecx ;размер данных, должен быть <= MEM_SIZE |
1374 | IgorA | 203 | |
204 |
|
||
205 |
|
||
206 | |||
207 |
|
||
208 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
||
1634 | IgorA | 209 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
5911 | IgorA | 210 | info_capt_len,el_focus, p_scroll,on_press |
1634 | IgorA | 211 | { |
5911 | IgorA | 212 | .box_left dd box_l |
213 | .box_top dd box_t |
||
214 | .box_width dd box_w |
||
215 | .box_height dd box_h |
||
216 | .data_info dd 0 |
||
217 | .info_size dw info_size |
||
218 | .info_max_count dd info_max_count |
||
219 | .style dd style |
||
220 | .data_nodes dd 0 |
||
221 | .data_img dd 0 |
||
222 | .img_cx dw img_cx |
||
223 | .img_cy dw img_cy |
||
224 | .data_img_sys dd 0 |
||
225 | .ch_tim dd 0 |
||
226 | .tim_undo dd 0 |
||
227 | .cur_pos dd 0 |
||
228 | .col_bkg dd col_bkg |
||
229 | .col_zag dd col_zag |
||
230 | .col_txt dd col_txt |
||
231 | .capt_cy dw capt_cy |
||
232 | .info_capt_offs dw info_capt_offs |
||
233 | .info_capt_len dw info_capt_len |
||
234 | .el_focus dd el_focus |
||
235 | .p_scroll dd p_scroll |
||
236 | .on_press dd on_press |
||
1374 | IgorA | 237 | } |
238 |
|
||
239 |
|
||
240 |
|
||
241 |
|
||
1634 | IgorA | 242 |
|
243 |
|
||
244 |
|
||
245 |
|
||
246 |
|
||
247 |
|
||
248 |
|
||
1374 | IgorA | 249 |
|
250 |
|
||
5911 | IgorA | 251 |
|
1634 | IgorA | 252 |
|
1374 | IgorA | 253 | |
254 | |||
255 |
|
||
256 | |||
257 |
|
||
258 | tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\ |
||
1634 | IgorA | 259 | 0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\ |
260 | el_focus, wScr,fun_on_enter |
||
1374 | IgorA | 261 | |
262 |
|
||
263 |
|
||
264 |
|
||
265 |
|
||
266 |
|
||
267 |
|
||
268 |
|
||
269 | |||
270 | |||
5911 | IgorA | 271 |
|
1374 | IgorA | 272 | |
273 |