Внешний вид элемента управления TreeList:
Рис. 1. Окно программы с элементом TreeList
Конструктор элемента, нужно вызывать перед использованием элемента для выделения памяти и других настроек.
Деструктор элемента, чистит память по указателям: data_info, data_nodes, data_img и data_img_sys. Если в программе используется несколько элементов с одинаковыми иконками, то указатели data_img и data_img_sys нужно приравнять к 0 в других элементах, так что-бы при вызове деструкторов не было повторного удаления одних и тех же иконок.
Очистка списка от всех узлов. Это действие нельзя отменить функцией tl_info_undo.
Функция которую нужно вызывать при нажатии на клавиатуру. Кнопки, которые не доступны если есть стиль tl_key_no_edit: [Enter], [Delete], [←], [→]. Всегда доступны: [↑], [↓], [Page Up], [Page Dn], [Space]. Функция проверяет включен ли режим scan кодов, и в случае необходимости сама преобразует коды.
Функция для событий от мыши.
Полная перерисовка окна элемента.
Отменяет добавление узлов. Действует только на весь узел целиком, не учитывая изменения внутри узлов. Т. е. нельзя отменить действия выполненные например функциями: tl_node_set_data, tl_node_lev_inc и им подобным.
Повтор отмененных действий. Обратная функция по отношению к tl_info_undo.
Добавляет узел, в позицию указанную курсором. Пример добавления узла:
push dword tree1 push dword 0x10002 push dword data_buffer call dword[tl_node_add]
где: tree1 - структура tree_list; 0x10002 - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел.
Устанавливает новые данные (пользовательские и подпись) в узел под курсором.
Берет указатель на данные (пользовательские и подпись) из узла под курсором.
Удаляет узел, но не окончательно, при необходимости узел можно вернуть функцией tl_info_undo.
Ставит курсор в начало списка, перематывает скроллинг если нужно.
Переносит курсор на одну позицию ниже.
Переносит курсор на одну позицию выше.
Открывает или закрывает родительский узел. Если у узла нет дочерних элементов, то ничего не делает. Автоматически перерисовывает окно если состояние узла изменилось.
Добавить уровень узла под курсором. Делает узел дочерним.
Уменьшает уровень узла под курсором. Делает узел родительским.
Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:
push dword tree1 call dword[tl_node_move_up] ;переместить узел
где: tree1 - структура tree_list
Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:
push dword tree1 call dword[tl_node_move_down] ;переместить узел
где: tree1 - структура tree_list
Берет внутренний указатель на структуру описывающую узел.
Берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов.
Берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.
Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к даным элемента в "фоновом режиме".
Сохраняет информацию об узлах элемента в память. Пример использования функции:
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
где: tree1 - структура tree_list; 0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее); node_data - указатель на блок памяти; MEM_SIZE - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок сохранения.
Загружает информацию об узлах элемента из памяти. Пример использования функции:
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
где: tree1 - структура tree_list; 0 - индекс считываемого элемента; node_data - указатель на блок памяти; MEM_SIZE - размер блока памяти для сохранения. В регистр eax пишется значение 0 или записываются коды ошибок считывания.
Вычисляет размер блока памяти (в который были раньше сохранены элементы). Эту функцию можно использовать перед сохранением на диск, для получения точного размера сохраняемых данных.
Версия элемента
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 }
info_size - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через info_capt_offs и info_capt_len см. рис. 2) а остальная часть будет использована как подпись узла.
info_max_count - максимальное количество узлов, которые можно добавить в элемент.
style - стили элемента.
data_nodes - указатель на внутренние структуры узлов (TreeList).
data_img - указатель на изображения с иконками узлов.
data_img_sys - указатель на системные изображения (курсор, плюсики, линии, ... все кроме иконок узлов).
capt_cy - высота строки для подписи вверху элемента, если меньше 9 подпись не выводится.
info_capt_len - длинна текста для подписи. Если равно 0, то длинна считается так: info_size - info_capt_offs.
p_scrol - указатель на структуру скроллинга, связанного с данным элементом.
on_press - указатель на функцию, которая будет вызвана при нажитии [Enter]. Если указатель равен 0 то ничего не будет вызыватся.
Рис. 2. Параметры info_size, info_capt_offs и info_capt_len в узле
Пример создания структуры:
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
Элемент нельзя редактировать на клавиатуре (изменять уровни, удалять). Ставьте этот стиль если нужно создать элемент только для просмотра данных.
Рисовать линии к родительскому узлу.
Стиль не отображает уровни (как в ListBox все узлы одного уровня).
Документация обновлялась последний раз 10.01.10.