0,0 → 1,240 |
<html> |
<head> |
<title>ýëåìåíò Tree List</title> |
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251"> |
<link href="../style.css" type=text/css rel=stylesheet> |
</head> |
<body> |
<p><a href="../box_lib.htm">Íà ãëàâíóþ ↑</a></p> |
<h1>Îãëàâëåíèå</h1> |
<p><a href="#vveden">Ââåäåíèå</a></p> |
<p><a href="#funct">Ôóíêöèè</a></p> |
<ul> |
<li><a href="#fun_init">tl_data_init</a></li> |
<li><a href="#fun_clear1">tl_data_clear</a></li> |
<li><a href="#fun_clear2">tl_info_clear</a></li> |
<li><a href="#fun_key">tl_key</a></li> |
<li><a href="#fun_mouse">tl_mouse</a></li> |
<li><a href="#fun_draw">tl_draw</a></li> |
<li><a href="#fun_undo">tl_info_undo</a></li> |
<li><a href="#fun_redo">tl_info_redo</a></li> |
<li><a href="#fun_add">tl_node_add</a></li> |
<li><a href="#fun_set_d">tl_node_set_data</a></li> |
<li><a href="#fun_get_d">tl_node_get_data</a></li> |
<li><a href="#fun_delete">tl_node_delete</a></li> |
<li><a href="#fun_cur_b">tl_cur_beg</a></li> |
<li><a href="#fun_cur_n">tl_cur_next</a></li> |
<li><a href="#fun_cur_p">tl_cur_perv</a></li> |
<li><a href="#fun_clo_opn">tl_node_close_open</a></li> |
<li><a href="#fun_lev_i">tl_node_lev_inc</a></li> |
<li><a href="#fun_lev_d">tl_node_lev_dec</a></li> |
<li><a href="#fun_mov_u">tl_node_move_up</a></li> |
<li><a href="#fun_mov_d">tl_node_move_down</a></li> |
<li>tl_node_poi_get_info</li> |
<li>tl_node_poi_get_next_info</li> |
<li>tl_node_poi_get_data</li> |
<li><a href="#fun_sme">tl_save_mem</a></li> |
<li><a href="#fun_lme">tl_load_mem</a></li> |
<li><a href="#fun_gme">tl_get_mem_size</a></li> |
<li><a href="#version">version_tree_list</a></li> |
</ul> |
<p><a href="#struc_tree_list">Ñòðóêòóðà tree_list</a></p> |
<p><a href="#tree_list_styles">Ñòèëè ýëåìåíòà</a></p> |
|
<h1><a name="vveden">Ââåäåíèå</a></h1> |
<p>Âíåøíèé âèä ýëåìåíòà óïðàâëåíèÿ TreeList:</p> |
<p><img src="window_tree_list.png"></p> |
<p>Ðèñ. 1. Îêíî ïðîãðàììû ñ ýëåìåíòîì TreeList</p> |
|
<h1><a name="funct">Ôóíêöèè</a></h1> |
|
<h2><a name="fun_init">tl_data_init</a></h2> |
<p>Êîíñòðóêòîð ýëåìåíòà, íóæíî âûçûâàòü ïåðåä èñïîëüçîâàíèåì ýëåìåíòà äëÿ âûäåëåíèÿ ïàìÿòè è äðóãèõ íàñòðîåê.</p> |
<h2><a name="fun_clear1">tl_data_clear</a></h2> |
<p>Äåñòðóêòîð ýëåìåíòà, ÷èñòèò ïàìÿòü ïî óêàçàòåëÿì: <b>data_info</b>, <b>data_nodes</b>, <b>data_img</b> è <b>data_img_sys</b>. Åñëè â ïðîãðàììå èñïîëüçóåòñÿ <i>íåñêîëüêî ýëåìåíòîâ ñ îäèíàêîâûìè èêîíêàìè</i>, òî óêàçàòåëè data_img è data_img_sys íóæíî ïðèðàâíÿòü ê 0 â äðóãèõ ýëåìåíòàõ, òàê ÷òî-áû ïðè âûçîâå äåñòðóêòîðîâ íå áûëî ïîâòîðíîãî óäàëåíèÿ îäíèõ è òåõ æå èêîíîê.</p> |
|
<h2><a name="fun_clear2">tl_info_clear</a></h2> |
<p>Î÷èñòêà ñïèñêà îò âñåõ óçëîâ. Ýòî äåéñòâèå íåëüçÿ îòìåíèòü ôóíêöèåé <b>tl_info_undo</b>.</p> |
|
<h2><a name="fun_key">tl_key</a></h2> |
<p>Ôóíêöèÿ êîòîðóþ íóæíî âûçûâàòü ïðè íàæàòèè íà êëàâèàòóðó. |
Êíîïêè, êîòîðûå íå äîñòóïíû åñëè åñòü ñòèëü <i>tl_key_no_edit</i>: [<b>Enter</b>], [<b>Delete</b>], [<b>←</b>], [<b>→</b>]. |
Âñåãäà äîñòóïíû: [<b>↑</b>], [<b>↓</b>], [<b>Page Up</b>], [<b>Page Dn</b>], [<b>Space</b>]. |
Ôóíêöèÿ ïðîâåðÿåò âêëþ÷åí ëè ðåæèì scan êîäîâ, è â ñëó÷àå íåîáõîäèìîñòè ñàìà ïðåîáðàçóåò êîäû.</p> |
|
<h2><a name="fun_mouse">tl_mouse</a></h2> |
<p>Ôóíêöèÿ äëÿ ñîáûòèé îò ìûøè.</p> |
|
<h2><a name="fun_draw">tl_draw</a></h2> |
<p>Ïîëíàÿ ïåðåðèñîâêà îêíà ýëåìåíòà.</p> |
|
<h2><a name="fun_undo">tl_info_undo</a></h2> |
<p>Îòìåíÿåò äîáàâëåíèå óçëîâ. Äåéñòâóåò òîëüêî íà âåñü óçåë öåëèêîì, íå ó÷èòûâàÿ èçìåíåíèÿ âíóòðè óçëîâ. Ò. å. íåëüçÿ îòìåíèòü äåéñòâèÿ âûïîëíåííûå íàïðèìåð ôóíêöèÿìè: <b>tl_node_set_data</b>, <b>tl_node_lev_inc</b> è èì ïîäîáíûì.</p> |
|
<h2><a name="fun_redo">tl_info_redo</a></h2> |
<p>Ïîâòîð îòìåíåííûõ äåéñòâèé. Îáðàòíàÿ ôóíêöèÿ ïî îòíîøåíèþ ê <b>tl_info_undo</b>.</p> |
|
<h2><a name="fun_add">tl_node_add</a></h2> |
<p>Äîáàâëÿåò óçåë, â ïîçèöèþ óêàçàííóþ êóðñîðîì. Ïðèìåð äîáàâëåíèÿ óçëà:</p> |
<pre> push dword tree1 |
push dword 0x10002 |
push dword data_buffer |
call dword[tl_node_add]</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0x10002</b> - ïàðàìåòðû óçëà (ñòàðøèå áàéòû 0x0001 - èíäåêñ èêîíêè, îòîáðàæàåìîé âîçëå óçëà; ìåíüøèé áàéò 0x02 - óðîâåíü âëîæåíîñòè óçëà); <b>data_buffer</b> - óêàçàòåëü íà äûííûå, äîáàâëÿåìûå â óçåë.</p> |
|
<h2><a name="fun_set_d">tl_node_set_data</a></h2> |
<p>Óñòàíàâëèâàåò íîâûå äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) â óçåë ïîä êóðñîðîì.</p> |
|
<h2><a name="fun_get_d">tl_node_get_data</a></h2> |
<p>Áåðåò óêàçàòåëü íà äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) èç óçëà ïîä êóðñîðîì.</p> |
|
<h2><a name="fun_delete">tl_node_delete</a></h2> |
<p>Óäàëÿåò óçåë, íî íå îêîí÷àòåëüíî, ïðè íåîáõîäèìîñòè óçåë ìîæíî âåðíóòü ôóíêöèåé <b>tl_info_undo</b>.</p> |
|
<h2><a name="fun_cur_b">tl_cur_beg</a></h2> |
<p>Ñòàâèò êóðñîð â íà÷àëî ñïèñêà, ïåðåìàòûâàåò ñêðîëëèíã åñëè íóæíî.</p> |
|
<h2><a name="fun_cur_n">tl_cur_next</a></h2> |
<p>Ïåðåíîñèò êóðñîð íà îäíó ïîçèöèþ íèæå.</p> |
|
<h2><a name="fun_cur_p">tl_cur_perv</a></h2> |
<p>Ïåðåíîñèò êóðñîð íà îäíó ïîçèöèþ âûøå.</p> |
|
<h2><a name="fun_clo_opn">tl_node_close_open</a></h2> |
<p>Îòêðûâàåò èëè çàêðûâàåò ðîäèòåëüñêèé óçåë. Åñëè ó óçëà íåò äî÷åðíèõ ýëåìåíòîâ, |
òî íè÷åãî íå äåëàåò. Àâòîìàòè÷åñêè ïåðåðèñîâûâàåò îêíî åñëè ñîñòîÿíèå óçëà èçìåíèëîñü.</p> |
|
<h2><a name="fun_lev_i">tl_node_lev_inc</a></h2> |
<p>Äîáàâèòü óðîâåíü óçëà ïîä êóðñîðîì. Äåëàåò óçåë äî÷åðíèì.</p> |
|
<h2><a name="fun_lev_d">tl_node_lev_dec</a></h2> |
<p>Óìåíüøàåò óðîâåíü óçëà ïîä êóðñîðîì. Äåëàåò óçåë ðîäèòåëüñêèì.</p> |
|
<h2><a name="fun_mov_u">tl_node_move_up</a></h2> |
<p>Ïåðåìåùàåò ââåðõ óçåë ïîä êóðñîðîì. Âìåñòå ñ óçëîì äâèãàåòñÿ òàêæå è êóðñîð. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> push dword tree1 |
call dword[tl_node_move_up] ;ïåðåìåñòèòü óçåë</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list</p> |
|
<h2><a name="fun_mov_d">tl_node_move_down</a></h2> |
<p>Ïåðåìåùàåò âíèç óçåë ïîä êóðñîðîì. Âìåñòå ñ óçëîì äâèãàåòñÿ òàêæå è êóðñîð. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> push dword tree1 |
call dword[tl_node_move_down] ;ïåðåìåñòèòü óçåë</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list</p> |
|
<h2>tl_node_poi_get_info</h2> |
<p>Áåðåò âíóòðåííèé óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë.</p> |
<h2>tl_node_poi_get_next_info</h2> |
<p>Áåðåò óêàçàòåëü íà ñëåäóþùèé ýëåìåíò â öåïè, áåç ó÷åòà îòêðûòèÿ/çàêðûòèÿ äî÷åðíèõ óçëîâ.</p> |
<h2>tl_node_poi_get_data</h2> |
<p>Áåðåò óêàçàòåëü íà äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) èç óçëà óêàçàííîãî â óêàçàòåëå.</p> |
|
<p>Ôóíêöèÿìè tl_node_poi_get_info, tl_node_poi_get_next_info è tl_node_poi_get_data ìîæíî ñ÷èòûâàòü èíôîðìàöèþ î óçëàõ ýëåìåíòà, ïðè ýòîì íå ìåíÿÿ òåêóùåãî ïîëîæåíèÿ êóðñîðà. Ò. å. ìîæíî îðãàíèçîâàòü äîñòóï ê äàíûì ýëåìåíòà â "ôîíîâîì ðåæèìå".</p> |
|
<h2><a name="fun_sme">tl_save_mem</a></h2> |
<p>Ñîõðàíÿåò èíôîðìàöèþ îá óçëàõ ýëåìåíòà â ïàìÿòü. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE |
......... |
push dword tree1 |
push dword 0 |
push dword node_data |
push dword MEM_SIZE |
call dword[tl_save_mem] |
pop eax</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0</b> - îïöèÿ ñîõðàíåíèÿ â íà÷àëî áëîêà ïàìÿòè (åñëè = 1, òî äîáàâëÿåò ýëåìåíò ïîñëå äðóãèõ ñîõðàíåííûõ ðàíåå); |
<b>node_data</b> - óêàçàòåëü íà áëîê ïàìÿòè; |
<b>MEM_SIZE</b> - ðàçìåð áëîêà ïàìÿòè äëÿ ñîõðàíåíèÿ. |
 ðåãèñòð <b>eax</b> ïèøåòñÿ çíà÷åíèå 0 èëè çàïèñûâàþòñÿ êîäû îøèáîê ñîõðàíåíèÿ.</p> |
|
<h2><a name="fun_lme">tl_load_mem</a></h2> |
<p>Çàãðóæàåò èíôîðìàöèþ îá óçëàõ ýëåìåíòà èç ïàìÿòè. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE |
......... |
push dword tree1 |
push dword 0 |
push dword node_data |
push dword MEM_SIZE |
call dword[tl_load_mem] |
pop eax</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0</b> - èíäåêñ ñ÷èòûâàåìîãî ýëåìåíòà; |
<b>node_data</b> - óêàçàòåëü íà áëîê ïàìÿòè; |
<b>MEM_SIZE</b> - ðàçìåð áëîêà ïàìÿòè äëÿ ñîõðàíåíèÿ. |
 ðåãèñòð <b>eax</b> ïèøåòñÿ çíà÷åíèå 0 èëè çàïèñûâàþòñÿ êîäû îøèáîê ñ÷èòûâàíèÿ.</p> |
|
<h2><a name="fun_gme">tl_get_mem_size</a></h2> |
<p>Âû÷èñëÿåò ðàçìåð áëîêà ïàìÿòè (â êîòîðûé áûëè ðàíüøå ñîõðàíåíû ýëåìåíòû). |
Ýòó ôóíêöèþ ìîæíî èñïîëüçîâàòü ïåðåä ñîõðàíåíèåì íà äèñê, äëÿ ïîëó÷åíèÿ òî÷íîãî |
ðàçìåðà ñîõðàíÿåìûõ äàííûõ.</p> |
|
<h2><a name="version">version_tree_list</a></h2> |
<p>Âåðñèÿ ýëåìåíòà</p> |
|
<h1><a name="struc_tree_list">Ñòðóêòóðà tree_list</a></h1> |
<pre>struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
info_capt_len,el_focus, p_scrol,on_press { |
.data_info dd 0 |
.info_size dw info_size |
.info_max_count dd info_max_count |
.style dd style |
.data_nodes dd 0 |
.data_img dd 0 |
.img_cx dw img_cx |
.img_cy dw img_cy |
.data_img_sys dd 0 |
.ch_tim dd 0 |
.ls_tim dd 0 |
.tim_undo dd 0 |
.cur_pos dd 0 |
.col_bkg dd col_bkg |
.col_zag dd col_zag |
.col_txt dd col_txt |
.box_left dd box_l |
.box_top dd box_t |
.box_width dd box_w |
.box_height dd box_h |
.capt_cy dw capt_cy |
.info_capt_offs dw info_capt_offs |
.info_capt_len dw info_capt_len |
.el_focus dd el_focus |
.p_scrol dd p_scrol |
rb 4 |
.on_activate dd 0 |
.on_press dd on_press |
}</pre> |
<p><b>info_size</b> - êîëè÷åñòâî áàéò, êîòîðîå áóäåò âûäåëåíî äëÿ êàæäîãî óçëà. ×àñòü ýòîé ïàìÿòè ïîëüçîâàòåëü ìîæåò èñïîëüçîâàòü äëÿ ñâîèõ öåëåé (ðåãóëèðóåòñÿ ÷åðåç <i>info_capt_offs</i> è <i>info_capt_len</i> ñì. ðèñ. 2) à îñòàëüíàÿ ÷àñòü áóäåò èñïîëüçîâàíà êàê ïîäïèñü óçëà.</p> |
<p><b>info_max_count</b> - ìàêñèìàëüíîå êîëè÷åñòâî óçëîâ, êîòîðûå ìîæíî äîáàâèòü â ýëåìåíò.</p> |
<p><b>style</b> - ñòèëè ýëåìåíòà.</p> |
<p><b>data_nodes</b> - óêàçàòåëü íà âíóòðåííèå ñòðóêòóðû óçëîâ (<i>TreeList</i>).</p> |
<p><b>data_img</b> - óêàçàòåëü íà èçîáðàæåíèÿ ñ èêîíêàìè óçëîâ.</p> |
<p><b>data_img_sys</b> - óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (êóðñîð, ïëþñèêè, ëèíèè, ... âñå êðîìå èêîíîê óçëîâ).</p> |
<p><b>capt_cy</b> - âûñîòà ñòðîêè äëÿ ïîäïèñè ââåðõó ýëåìåíòà, åñëè ìåíüøå 9 ïîäïèñü íå âûâîäèòñÿ.</p> |
<p><b>info_capt_len</b> - äëèííà òåêñòà äëÿ ïîäïèñè. Åñëè ðàâíî 0, òî äëèííà ñ÷èòàåòñÿ òàê: <i>info_size - info_capt_offs</i>.</p> |
<p><b>p_scrol</b> - óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà, ñâÿçàííîãî ñ äàííûì ýëåìåíòîì.</p> |
<p><b>on_press</b> - óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ áóäåò âûçâàíà ïðè íàæèòèè [<b>Enter</b>]. Åñëè óêàçàòåëü ðàâåí 0 òî íè÷åãî íå áóäåò âûçûâàòñÿ.</p> |
|
<p><img src="info_size.png"></p> |
<p>Ðèñ. 2. Ïàðàìåòðû <i>info_size</i>, <i>info_capt_offs</i> è <i>info_capt_len</i> â óçëå</p> |
|
<p>Ïðèìåð ñîçäàíèÿ ñòðóêòóðû:</p> |
<pre>tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\ |
0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\ |
el_focus, wScr,fun_on_enter</pre> |
|
<h1><a name="tree_list_styles">Ñòèëè ýëåìåíòà</a></h1> |
<h2>tl_key_no_edit</h2> |
<p>Ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü). Ñòàâüòå ýòîò ñòèëü åñëè íóæíî ñîçäàòü ýëåìåíò òîëüêî äëÿ ïðîñìîòðà äàííûõ.</p> |
<h2>tl_draw_par_line</h2> |
<p>Ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó.</p> |
<h2>tl_list_box_mode</h2> |
<p>Ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå óçëû îäíîãî óðîâíÿ).</p> |
|
<hr> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 10.01.10.</p> |
</body> |
</html> |