<
meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table { font-size: 15px; }
<
p><
a href="#vveden">Ââåäåíèå<
/a><
/p>
<
p><
a href="#funct">Ôóíêöèè<
/a><
/p>
<
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>tl_node_close_open<
/li>
<
li>tl_node_move_down<
/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>
<
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>
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>
<
p>Ñòàâèò êóðñîð â íà÷àëî ñïèñêà, ïåðåìàòûâàåò ñêðîëëèíã åñëè íóæíî.<
/p>
<
p>Ïåðåíîñèò êóðñîð íèæå.<
/p>
<
p>Ïåðåíîñèò êóðñîð âûøå.<
/p>
<
h2>tl_node_close_open<
/h2>
<
p>Îòêðûâàåò èëè çàêðûâàåò ðîäèòåëüñêèé óçåë. Åñëè ó óçëà íåò äî÷åðíèõ ýëåìåíòîâ,
òî íè÷åãî íå äåëàåò. Àâòîìàòè÷åñêè ïåðåðèñîâûâàåò îêíî åñëè ñîñòîÿíèå óçëà èçìåíèëîñü.<
/p>
<
p>Äîáàâèòü óðîâåíü óçëà ïîä êóðñîðîì. Äåëàåò óçåë äî÷åðíèì.<
/p>
<
p>Óìåíüøàåò óðîâåíü óçëà ïîä êóðñîðîì. Äåëàåò óçåë ðîäèòåëüñêèì.<
/p>
<
p>Ïåðåìåùàåò ââåðõ óçåë ïîä êóðñîðîì. Âìåñòå ñ óçëîì äâèãàåòñÿ òàêæå è êóðñîð. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:<
/p>
call dword
[tl_node_move_up
] ;ïåðåìåñòèòü óçåë<
/pre>
<
p>ãäå: <
b>tree1<
/b> - ñòðóêòóðà tree_list<
/p>
<
h2>tl_node_move_down<
/h2>
<
p>Ïåðåìåùàåò âíèç óçåë ïîä êóðñîðîì. Âìåñòå ñ óçëîì äâèãàåòñÿ òàêæå è êóðñîð. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:<
/p>
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>
node_data rb MEM_SIZE
.........
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_save_mem]
<
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>
node_data rb MEM_SIZE
.........
push dword tree1
push dword 0
push dword node_data
push dword MEM_SIZE
call dword[tl_load_mem]
<
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>
<
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
<
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>
<
p>Ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå
(èçìåíÿòü óðîâíè, óäàëÿòü
). Ñòàâüòå ýòîò ñòèëü åñëè íóæíî ñîçäàòü ýëåìåíò òîëüêî äëÿ ïðîñìîòðà äàííûõ.<
/p>
<
h2>tl_draw_par_line<
/h2>
<
p>Ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó.<
/p>
<
h2>tl_list_box_mode<
/h2>
<
p>Ñòèëü íå îòîáðàæàåò óðîâíè
(êàê â ListBox âñå óçëû îäíîãî óðîâíÿ
).<
/p>
<
p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 23.12.09.<
/p>