Difference between revisions of "Box lib tree list/ru"
Jump to navigation
Jump to search
m (→Функции) |
Nisargshah95 (talk | contribs) m (fix file include in example code) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 9: | Line 9: | ||
*'''tl_info_redo''' - Повтор отмененных действий. Обратная функция по отношению к tl_info_undo. | *'''tl_info_redo''' - Повтор отмененных действий. Обратная функция по отношению к tl_info_undo. | ||
*'''tl_node_add''' - Добавляет узел, в позицию указанную курсором. Пример добавления узла: | *'''tl_node_add''' - Добавляет узел, в позицию указанную курсором. Пример добавления узла: | ||
− | <asm> | + | <syntaxhighlight lang="asm"> stdcall dword[tl_node_add], tree1, 0x10002, data_buffer</syntaxhighlight> |
− | |||
− | |||
− | |||
где: ''tree1'' - структура tree_list; ''0x10002'' - параметры узла (старшие байты ''0x0001'' - индекс иконки, отображаемой возле узла; меньший байт ''0x02'' - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел. | где: ''tree1'' - структура tree_list; ''0x10002'' - параметры узла (старшие байты ''0x0001'' - индекс иконки, отображаемой возле узла; меньший байт ''0x02'' - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел. | ||
*'''tl_node_set_data''' - устанавливает новые данные (пользовательские и подпись) в узел под курсором. | *'''tl_node_set_data''' - устанавливает новые данные (пользовательские и подпись) в узел под курсором. | ||
Line 24: | Line 21: | ||
*'''tl_node_lev_dec''' - Уменьшает уровень узла под курсором. Делает узел родительским. | *'''tl_node_lev_dec''' - Уменьшает уровень узла под курсором. Делает узел родительским. | ||
*'''tl_node_move_up''' - Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции: | *'''tl_node_move_up''' - Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции: | ||
− | <asm> push dword tree1 | + | <syntaxhighlight lang="asm"> push dword tree1 |
− | call dword[tl_node_move_up] ;переместить узел</ | + | call dword[tl_node_move_up] ;переместить узел</syntaxhighlight> |
где: ''tree1'' - структура tree_list | где: ''tree1'' - структура tree_list | ||
*'''tl_node_move_down''' | *'''tl_node_move_down''' | ||
Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции: | Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции: | ||
− | <asm> push dword tree1 | + | <syntaxhighlight lang="asm"> push dword tree1 |
− | call dword[tl_node_move_down] ;переместить узел</ | + | call dword[tl_node_move_down] ;переместить узел</syntaxhighlight> |
где: tree1 - структура tree_list | где: tree1 - структура tree_list | ||
*'''tl_node_poi_get_info''' - Берет внутренний указатель на структуру описывающую узел. Пример использования функции: | *'''tl_node_poi_get_info''' - Берет внутренний указатель на структуру описывающую узел. Пример использования функции: | ||
− | <asm> | + | <syntaxhighlight lang="asm">stdcall dword[tl_node_poi_get_info], tree1, 0</syntaxhighlight> |
− | + | где: ''tree1'' - структура tree_list; ''0'' - позиция узла, с которого берется указатель; ''eax'' - указатель на структуру описывающую узел. | |
− | |||
− | |||
− | где: ''tree1'' - структура tree_list; ''0'' - позиция узла, с которого берется указатель; '' | ||
*'''tl_node_poi_get_next_info''' - берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов. | *'''tl_node_poi_get_next_info''' - берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов. | ||
*'''tl_node_poi_get_data''' - берет указатель на данные (пользовательские и подпись) из узла указанного в указателе. | *'''tl_node_poi_get_data''' - берет указатель на данные (пользовательские и подпись) из узла указанного в указателе. | ||
Line 43: | Line 37: | ||
Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к данным элемента в "фоновом режиме". | Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к данным элемента в "фоновом режиме". | ||
*'''tl_save_mem''' - Сохраняет информацию об узлах элемента в память. Пример использования функции: | *'''tl_save_mem''' - Сохраняет информацию об узлах элемента в память. Пример использования функции: | ||
− | <asm> MEM_SIZE equ 5000 | + | <syntaxhighlight lang="asm"> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE | node_data rb MEM_SIZE | ||
......... | ......... | ||
− | + | stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE</syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
− | |||
где: ''tree1'' - структура tree_list; ''0'' - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок сохранения. | где: ''tree1'' - структура tree_list; ''0'' - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок сохранения. | ||
*'''tl_load_mem''' - Загружает информацию об узлах элемента из памяти. Пример использования функции: | *'''tl_load_mem''' - Загружает информацию об узлах элемента из памяти. Пример использования функции: | ||
− | <asm> MEM_SIZE equ 5000 | + | <syntaxhighlight lang="asm"> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE | node_data rb MEM_SIZE | ||
......... | ......... | ||
− | + | stdcall dword[tl_load_mem], tree1, 0, node_data, MEM_SIZE</syntaxhighlight> | |
− | |||
− | |||
− | |||
− | |||
− | |||
где: ''tree1'' - структура tree_list; 0 - индекс считываемого элемента; ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок считывания. | где: ''tree1'' - структура tree_list; 0 - индекс считываемого элемента; ''node_data'' - указатель на блок памяти; ''MEM_SIZE'' - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок считывания. | ||
*'''tl_get_mem_size''' - Вычисляет размер блока памяти (в который были раньше сохранены элементы). Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных. | *'''tl_get_mem_size''' - Вычисляет размер блока памяти (в который были раньше сохранены элементы). Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных. | ||
Line 68: | Line 52: | ||
==Структура tree_list== | ==Структура tree_list== | ||
− | <asm>struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ | + | <syntaxhighlight lang="asm">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,\ | 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 { | info_capt_len,el_focus, p_scrol,on_press { | ||
+ | .box_left dd box_l | ||
+ | .box_top dd box_t | ||
+ | .box_width dd box_w | ||
+ | .box_height dd box_h | ||
.data_info dd 0 | .data_info dd 0 | ||
.info_size dw info_size | .info_size dw info_size | ||
Line 81: | Line 69: | ||
.data_img_sys dd 0 | .data_img_sys dd 0 | ||
.ch_tim dd 0 | .ch_tim dd 0 | ||
− | |||
.tim_undo dd 0 | .tim_undo dd 0 | ||
.cur_pos dd 0 | .cur_pos dd 0 | ||
Line 87: | Line 74: | ||
.col_zag dd col_zag | .col_zag dd col_zag | ||
.col_txt dd col_txt | .col_txt dd col_txt | ||
− | |||
− | |||
− | |||
− | |||
.capt_cy dw capt_cy | .capt_cy dw capt_cy | ||
.info_capt_offs dw info_capt_offs | .info_capt_offs dw info_capt_offs | ||
Line 96: | Line 79: | ||
.el_focus dd el_focus | .el_focus dd el_focus | ||
.p_scrol dd p_scrol | .p_scrol dd p_scrol | ||
− | |||
− | |||
.on_press dd on_press | .on_press dd on_press | ||
− | }</ | + | }</syntaxhighlight> |
*'''info_size''' - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через ''info_capt_offs'' и ''info_capt_len'') а остальная часть будет использована как подпись узла. | *'''info_size''' - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через ''info_capt_offs'' и ''info_capt_len'') а остальная часть будет использована как подпись узла. | ||
*'''info_max_count''' - максимальное количество узлов, которые можно добавить в элемент. | *'''info_max_count''' - максимальное количество узлов, которые можно добавить в элемент. | ||
Line 117: | Line 98: | ||
Пример создания структуры: | Пример создания структуры: | ||
− | <asm>tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\ | + | <syntaxhighlight lang="asm">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,\ | 0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,0,\ | ||
− | el_focus, wScr,fun_on_enter</ | + | el_focus, wScr,fun_on_enter</syntaxhighlight> |
==Стили элемента== | ==Стили элемента== | ||
Line 130: | Line 111: | ||
==Пример== | ==Пример== | ||
Пример использования элемента ''tree_list''. Для компиляции в ''include'' нужно указать полный путь к папке ''svn''. Программа использует 2 файла с иконками ''tl_sys_16.bmp'' и ''tl_nod_16.bmp'' из папки ''svn\programs\develop\libraries\box_lib\trunk''. | Пример использования элемента ''tree_list''. Для компиляции в ''include'' нужно указать полный путь к папке ''svn''. Программа использует 2 файла с иконками ''tl_sys_16.bmp'' и ''tl_nod_16.bmp'' из папки ''svn\programs\develop\libraries\box_lib\trunk''. | ||
− | <asm>use32 | + | <syntaxhighlight lang="asm">use32 |
org 0x0 | org 0x0 | ||
db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт | db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт | ||
Line 145: | Line 126: | ||
include 'svn/programs/develop/libraries/box_lib/trunk/box_lib.mac' | include 'svn/programs/develop/libraries/box_lib/trunk/box_lib.mac' | ||
include 'svn/programs/develop/libraries/box_lib/load_lib.mac' | include 'svn/programs/develop/libraries/box_lib/load_lib.mac' | ||
− | include ' | + | include 'svn/programs/dll.inc' ;функции mem.Alloc,mem.Free,mem.ReAlloc |
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,0 | @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,0 | ||
Line 176: | Line 157: | ||
mcall 68,11 | mcall 68,11 | ||
− | stdcall dword[tl_data_init], | + | stdcall dword[tl_data_init], tree1 |
; читаем *.bmp файл с системными иконками | ; читаем *.bmp файл с системными иконками | ||
Line 186: | Line 167: | ||
mov [run_file_70.Buffer], eax | mov [run_file_70.Buffer], eax | ||
− | |||
mov [run_file_70.Function], 0 | mov [run_file_70.Function], 0 | ||
mov [run_file_70.Position], 54 | mov [run_file_70.Position], 54 | ||
Line 193: | Line 173: | ||
mov byte[run_file_70+20], 0 | mov byte[run_file_70+20], 0 | ||
mov [run_file_70.FileName], file_name | mov [run_file_70.FileName], file_name | ||
− | + | mcall 70,run_file_70 | |
− | |||
cmp ebx,0 | cmp ebx,0 | ||
jl @f | jl @f | ||
Line 208: | Line 187: | ||
mov [run_file_70.Buffer], eax | mov [run_file_70.Buffer], eax | ||
− | |||
;mov [run_file_70.Function], 0 | ;mov [run_file_70.Function], 0 | ||
;mov [run_file_70.Position], 54 | ;mov [run_file_70.Position], 54 | ||
Line 215: | Line 193: | ||
mov byte[run_file_70+20], 0 | mov byte[run_file_70+20], 0 | ||
mov [run_file_70.FileName], file_name | mov [run_file_70.FileName], file_name | ||
− | + | mcall 70,run_file_70 | |
− | |||
cmp ebx,0 | cmp ebx,0 | ||
jl @f | jl @f | ||
Line 225: | Line 202: | ||
align 4 | align 4 | ||
red_win: | red_win: | ||
− | + | mcall 12,1 | |
− | + | xor eax,eax | |
− | + | mov ebx,30*65536+320 | |
− | + | mov ecx,25*65536+255 | |
− | + | mov edx,[sc.work] | |
− | + | or edx,0x33000000 | |
− | + | mov edi,hed | |
− | + | mcall | |
− | + | mov eax,8 ;кнопка | |
− | + | mov ebx,215*65536+85 | |
− | + | mov ecx,5*65536+15 | |
− | + | mov edx,2 | |
− | + | mov esi,[sc.work_button] | |
− | + | int 0x40 | |
− | + | mov ebx,215*65536+60 | |
− | + | mov ecx,25*65536+15 | |
− | + | mov edx,3 | |
; mov esi,0xffd000 | ; mov esi,0xffd000 | ||
− | + | int 0x40 | |
− | + | mov ebx,215*65536+85 | |
− | + | mov ecx,45*65536+15 | |
− | + | mov edx,4 | |
− | + | int 0x40 | |
− | + | mov ecx,65*65536+15 | |
− | + | mov edx,5 | |
− | + | int 0x40 | |
− | + | mov ecx,85*65536+15 | |
− | + | mov edx,6 | |
− | + | int 0x40 | |
− | + | mov ecx,105*65536+15 | |
− | + | mov edx,7 | |
− | + | int 0x40 | |
− | + | mov ecx,125*65536+15 | |
− | + | mov edx,8 | |
− | + | int 0x40 | |
− | + | mov ecx,145*65536+15 | |
− | + | mov edx,9 | |
− | + | int 0x40 | |
− | + | mov ecx,165*65536+15 | |
− | + | mov edx,10 | |
− | + | int 0x40 | |
− | + | mov ecx,185*65536+15 | |
− | + | mov edx,11 | |
− | + | int 0x40 | |
− | + | mov ecx,205*65536+15 | |
− | + | mov edx,12 | |
− | + | int 0x40 | |
− | + | mov ebx,280*65536+20 | |
− | + | mov ecx,25*65536+15 | |
− | + | mov edx,100 | |
− | + | mov esi,0xd0d0 | |
− | + | int 0x40 | |
− | + | mov eax,4 ;рисование текста | |
− | + | mov ebx,10*65536+25 | |
− | + | mov ecx,[sc.work_button_text] | |
− | + | or ecx,0x80000000 | |